Ebből az oktatóanyagból megtudhatja, hogyan rendezheti a Python-szótárt kulcsa vagy értéke szerint.
Amikor Pythonban szótárral dolgozik, előfordulhat, hogy a tartalmát rendeznie kell – kulcs vagy érték szerint. Mivel a Python szótár kulcsérték-leképezés, új szótárt kell létrehoznia, amelyben a kulcsok vagy értékek szükség szerint vannak rendezve.
Ebben az oktatóanyagban a Python szótár alapjainak áttekintésével kezdjük. Ezután megtanulunk új szótárt létrehozni, amelyben a tartalom kulcs vagy érték szerint van rendezve, szükség szerint.
Tartalomjegyzék
A Python szótár alapjai, újra áttekintve
Mi az a Python szótár?
A szótár a Python beépített adatszerkezete. Az elemeket kulcs-érték párokként tárolja. A billentyűk segítségével megkeresheti a megfelelő értékeket. Mivel a kulcsok egyedileg azonosítják az értékeket, a kulcsok nem ismétlődnek.
py_dict = {"Python":"cool!","Learn":True} py_dict["Python"] # Output: cool! py_dict["Learn"] # Output: True
Funkcionálisan a szótár hasonló a hash térképhez. Ezért nem feltétlenül rendezett adatstruktúra. A szótár tartalmához tetszőleges sorrendben hozzáférhet, ha ismeri a kulcsokat.
Elemek rendezése a szótárban
A Python korábbi verzióiban egy RendelveDict hogy megőrizzük a kulcsok sorrendjét. A Python 3.7-ből azonban az elemeket abban a sorrendben érheti el, ahogyan hozzáadja őket a szótárhoz.
Most, hogy megtanulta a Python szótárak alapjait, tanulja meg, hogyan hozhat létre rendezett másolatokat a szótárról.
⚙️ Megjegyzés: Ahhoz, hogy az oktatóanyagban szereplő kód a várt módon működjön, Python 3.7 vagy újabb verzióra van szüksége. Letöltheti a Python legújabb verziójavagy futtassa a példákat a etoppc.com Online Python Editor alkalmazásban.
Python szótár rendezése kulcs szerint
Nézze meg a következő képet egy kávézó desszert menüjéről. Két oszlop található a menü tételeinek és a hozzájuk tartozó áraknak megfelelően.
Ezt Python szótár formájában ábrázolhatja úgy, hogy kulcsként összegyűjti az elemek neveit és értékekként az árakat.
Folytassuk a szótárdesszertek létrehozásával az alábbiak szerint.
desserts = { "Ice cream":10, "Brownies":12, "Cheesecake":3, "Swiss roll":5, "Cookies":4, "Cup cake":2 }
Ezután hozzunk létre egy rendezett_desszertek szótárt, ahol a desszertek ábécé sorrendben vannak elrendezve. Az eredeti desszertszótárban a desszertek nevei a kulcsok. Tehát ezeket a kulcsokat ábécé sorrendbe kell rendeznie egy új szótár létrehozásához.
Hogyan lehet elérni a Python szótár kulcsait
Ehhez először lekérjük a szótár kulcsait, majd ábécé sorrendbe rendezzük őket.
A Pythonban a beépített szótármódszerrel (.keys()) kaphat listát a szótárban található összes kulcsról.
Hívjuk meg a .keys() metódust a desszertszótárban a kulcsok lekéréséhez, az alábbiak szerint.
keys = desserts.keys() print(keys) #Output ['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 'Cup cake']
A Python beépített sorted() függvényének meghívása egy listával, amikor az argumentum egy új rendezett listát ad vissza.
Ezután hívjuk meg a sorted() függvényt a listakulcsokkal argumentumként, és tároljuk a rendezett listát a sorted_keys változóban.
sorted_keys = sorted(keys) print(sorted_keys) # Output ['Brownies', 'Cheesecake', 'Cookies', 'Cup cake', 'Ice cream', 'Swiss roll']
Most, hogy a kulcsokat ábécé sorrendbe rendeztük, a desszertek szótárból kikereshetjük a sorted_keys kulcsainak megfelelő értékeket, az alábbiak szerint.
sorted_desserts = {} for key in sorted_keys: sorted_desserts[key] = desserts[key] print(sorted_desserts) # Output {'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2, 'Ice cream': 10, 'Swiss roll': 5}
Bővítsük ki a fenti kódblokkot:
- A sorted_desserts inicializálása üres Python-szótárként.
- Lapozzon át a sorted_keys kulcslistán.
- A sorted_keys minden egyes kulcsához adjon hozzá egy bejegyzést a sorted_desszertekhez úgy, hogy megkeresi a megfelelő értéket a desszertek szótárban.
A for ciklus ilyen jellegű használata bőbeszédűnek számít. A Pythonban van egy tömörebb alternatíva a szótári megértés használatára.
Szótár értés Pythonban
A Python támogatja a szótári szövegértés használatát, hasonlóan a listák megértéséhez. A szótár értelmezése lehetővé teszi új Python szótár létrehozását egyetlen kódsorral.
▶️ Íme az általános konstrukció a szótár megértéséhez Pythonban.
# 1. when you have both keys and values in two lists: list1, list2 new_dict = {key:value for key,value in zip(list1,list2)} # 2. when you have the keys, and can look up the values new_dict = {key:value for key in <iterable>}
Használjuk a második konstrukciót a fenti cellában: new_dict = {key:value for key in
Ebben a példában:
- iterálható: a rendezett_kulcsok listája
- kulcs: az a kulcs, amelyhez a sorted_keys-en keresztül férünk hozzá
- érték: keresse ki a kulcsnak megfelelő értéket a desszertek szótárból, desszertek[key]
Mindezt összeadva megkapjuk a szótári megértés kifejezését, az alábbiak szerint.
sorted_desserts = {key:desserts[key] for key in sorted_keys} print(sorted_desserts) {'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2, 'Ice cream': 10, 'Swiss roll': 5}
A fenti kimenetből a desszertek ábécé sorrendbe kerülnek a rendezett_desszertek szótárban.
Python szótár rendezése érték szerint
Ezután megtanuljuk, hogyan kell a Python-szótárat értékei szerint rendezni.
A desszertek szótárban az értékek a desszertek árának felelnek meg. Érdemes lehet a szótárt árak szerint rendezni, akár növekvő, akár csökkenő sorrendben.
▶️ Az összes kulcs-érték pár lekéréséhez használhatja a .items() beépített szótármódszert. Minden sor egy kulcs-érték pár.
desserts.items() dict_items([('Ice cream', 10), ('Brownies', 12), ('Cheesecake', 3), ('Swiss roll', 5), ('Cookies', 4), ('Cup cake', 2)])
Mindegyik elem önmagában egy sor. Így az egyes kulcs-érték párokba is indexelhet, hogy külön-külön hozzáférhessen a kulcsokhoz és az értékekhez.
dict_items = desserts.items() for item in dict_items: print(f"key:{item[0]},value:{item[1]}") # Output key:Ice cream,value:10 key:Brownies,value:12 key:Cheesecake,value:3 key:Swiss roll,value:5 key:Cookies,value:4 key:Cup cake,value:2
Mivel értékek szerint szeretnénk rendezni, a fenti módszerrel kapjuk meg a kulcs-érték pár 1. indexének értékét.
Hogyan rendezzük a Python szótár értékeit növekvő sorrendben
Ezúttal a sorted() függvényt használjuk az opcionális kulcsparaméterrel együtt. kulcs lehet bármilyen Python függvény, beépített függvény, felhasználó által definiált függvény vagy akár a lambda funkció.
Megjegyzés: lambda args: a kifejezés a lambda függvények Pythonban történő meghatározásának szintaxisa.
Ebben a desszertek ár szerinti rendezési példájában szótárelemekhez (kulcs-érték párokhoz) férünk hozzá. Beállítjuk kulcs = lambda item:item[1] ahogy az érték (ár) szerint szeretnénk rendezni.
Mivel a sorted() függvény alapértelmezés szerint egy listát ad vissza, ezt kifejezetten diktálja, ahogy az alábbiakban látható.
sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1])) print(sorted_desserts) {'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5, 'Ice cream': 10, 'Brownies': 12}
A használatával is átírhatod szótári megértésahogy korábban már szó volt róla.
sorted_desserts = {key:value for key, value in sorted(desserts.items(), key=lambda item:item[1])} print(sorted_desserts) # Output {'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5, 'Ice cream': 10, 'Brownies': 12}
A sorted_dessertsben a 2 dolláros Cup Cake az első, a 12 dolláros Brownies pedig az utolsó tétel.
Hogyan rendezzük a Python szótár értékeit csökkenő sorrendben
Ha az árakat csökkenő sorrendbe szeretné rendezni, az opcionális fordított paramétert True értékre állíthatja az alábbiak szerint.
sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1], reverse=True)) print(sorted_desserts) # Output {'Brownies': 12, 'Ice cream': 10, 'Swiss roll': 5, 'Cookies': 4, 'Cheesecake': 3, 'Cup cake': 2}
Most a sorted_desszerteket az árak csökkenő sorrendjében rendeztük, kezdve a legdrágább desszert Brownie-val, amely 12 dollárba kerül.
Befejezés 👩🏽💻
Gyorsan összefoglaljuk mindazt, amit ebben az oktatóanyagban tanultunk.
- A Python szótár kulcs-érték párokban tárolja az adatokat; a kulcsoknak egyedinek kell lenniük.
- A szótár kulcs vagy érték szerinti rendezése során létrehozunk egy új szótárt, amelyet szükség szerint rendezünk.
- Használhatja a beépített szótári metódusokat, a .keys() és .items() az összes kulcsot, illetve kulcs-érték párokat.
- A kívánt rendezés eléréséhez használhatja a sorted() függvényt az opcionális paraméterek billentyűvel együtt, és fordítva is.
Most, hogy megtanulta, hogyan kell rendezni egy Python-szótárt, tanulja meg a Python-listák rendezését. Boldog kódolást!🎉