Python szótár rendezése kulcs vagy érték szerint

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.

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.

  Hogyan kell játszani a The Witness-t Linuxon

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.

  5 könnyed videojáték, amely segít ellazulni a stresszes időkben

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 } egy sorted_desserts szótár létrehozásához.

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.

  Megjegyzések készítése és a PDF-ben végzett változtatások offline mentése [Chrome]

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!🎉