Kā kārtot Python vārdnīcu pēc atslēgas vai vērtības

Šajā apmācībā jūs uzzināsit, kā kārtot Python vārdnīcu pēc tās atslēgas vai vērtības.

Strādājot ar vārdnīcu programmā Python, ir gadījumi, kad tās saturs ir jākārto — pēc atslēgas vai vērtības. Tā kā Python vārdnīca ir atslēgas vērtību kartēšana, jūs izveidosit jaunu vārdnīcu, kurā atslēgas vai vērtības ir sakārtotas pēc vajadzības.

Šajā apmācībā mēs sāksim ar Python vārdnīcas pamatu pārskatīšanu. Pēc tam mēs iemācīsimies izveidot jaunu vārdnīcu, kurā saturs ir sakārtots pēc atslēgas vai vērtības, ja nepieciešams.

Python vārdnīcas pamati, pārskatīti

Kas ir Python vārdnīca?

Vārdnīca ir Python iebūvēta datu struktūra. Tas saglabā vienumus kā atslēgu un vērtību pārus. Varat izmantot taustiņus, lai meklētu atbilstošās vērtības. Tā kā atslēgas unikāli identificē vērtības, atslēgas nedrīkst atkārtoties.

py_dict = {"Python":"cool!","Learn":True}
py_dict["Python"]
# Output: cool!

py_dict["Learn"]
# Output: True

Funkcionāli vārdnīca ir līdzīga hash kartei. Tāpēc tā ne vienmēr ir sakārtota datu struktūra. Jūs varat piekļūt vārdnīcas saturam jebkurā patvaļīgā secībā, ja vien zināt atslēgas.

Vienumu sakārtošana vārdnīcā

Iepriekšējās Python versijās jums bija jāizmanto a PasūtītsDikts lai saglabātu atslēgu secību. Tomēr no Python 3.7 vienumiem varat piekļūt tādā pašā secībā, kādā tos pievienojat vārdnīcai.

Tagad, kad esat apguvis Python vārdnīcu pamatus, uzzināsim, kā izveidot sakārtotas vārdnīcas kopijas.

⚙️ Piezīme. Lai šajā apmācībā ietvertais kods darbotos, kā paredzēts, jums ir nepieciešama Python 3.7 vai jaunāka versija. Jūs varat lejupielādēt jaunākā Python versijavai palaidiet piemērus pcdream.lt tiešsaistes Python redaktorā.

Kā kārtot Python vārdnīcu pēc atslēgas

Apskatiet šo kafejnīcas deserta ēdienkartes attēlu. Ir divas kolonnas, kas atbilst izvēlnes vienumiem un to attiecīgajām cenām.

  Kā piekļūt savam Epic Games kontam

Varat to attēlot Python vārdnīcas veidā, apkopojot vienumu nosaukumus kā atslēgas un to cenas kā vērtības.

Dosimies uz priekšu un izveidosim vārdnīcas desertus, kā parādīts zemāk.

desserts = {
    "Ice cream":10,
    "Brownies":12,
    "Cheesecake":3,
    "Swiss roll":5,
    "Cookies":4,
    "Cup cake":2
}

Tālāk veidosim vārdnīcu šķiroti_deserti, kur deserti ir sakārtoti alfabētiskā secībā. Oriģinālajā desertu vārdnīcā galvenie ir desertu nosaukumi. Tāpēc, lai izveidotu jaunu vārdnīcu, jums vajadzētu sakārtot šos taustiņus alfabētiskā secībā.

Kā piekļūt Python vārdnīcas taustiņiem

Lai to izdarītu, vispirms iegūsim vārdnīcas taustiņus un pēc tam sakārtosim tos alfabētiskā secībā.

Programmā Python varat izmantot iebūvēto vārdnīcas metodi .keys(), lai iegūtu visu vārdnīcas taustiņu sarakstu.

Izsauksim .keys() metodi deserta vārdnīcā, lai izgūtu atslēgas, kā parādīts tālāk.

keys = desserts.keys()
print(keys)

#Output
['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 
'Cup cake']

Python iebūvētās sorted() funkcijas izsaukšana ar sarakstu, kad arguments atgriež jaunu sakārtotu sarakstu.

Tālāk izsauksim funkciju sorted() ar saraksta taustiņiem kā argumentu un saglabāsim sakārtoto sarakstu mainīgajā sorted_keys.

sorted_keys = sorted(keys)
print(sorted_keys)

# Output
['Brownies', 'Cheesecake', 'Cookies', 'Cup cake', 'Ice cream', 'Swiss roll']

Tagad, kad atslēgas ir sakārtotas alfabētiskā secībā, desertu vārdnīcā varam meklēt vērtības, kas atbilst taustiņiem sorted_keys, kā parādīts tālāk.

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}

Izvērsīsim iepriekš minēto koda bloku:

  • Inicializējiet sorted_desserts, lai tā būtu tukša Python vārdnīca.
  • Pārlūkojiet atslēgu sarakstu sorted_keys.
  • Katrai atslēgai šķirotās_atslēgās pievienojiet ierakstu šķirotajam_deserts, uzmeklējot atbilstošo vērtību desertu vārdnīcā.

Šādas cilpas for lietošana tiek uzskatīta par daudzvārdu. Programmā Python ir daudz kodolīgāka alternatīva, izmantojot vārdnīcas izpratni.

Vārdnīcas izpratne Python valodā

Python atbalsta vārdnīcas izpratnes izmantošanu, kas ir līdzīga saraksta izpratnei. Vārdnīcas izpratne ļauj izveidot jaunu Python vārdnīcu, izmantojot tikai vienu koda rindiņu.

  Kā izdzēst savu Gmail kontu, neizdzēšot Google kontu

▶️ Šeit ir vispārīga konstrukcija, lai izmantotu vārdnīcas izpratni Python.

# 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>}

Izmantosim otro konstrukciju iepriekš minētajā šūnā: new_dict = {key:value for key in }, lai izveidotu sorted_desserts vārdnīcu.

Šajā piemērā:

  • iterable: saraksts sorted_keys
  • atslēga: atslēga, kurai piekļūstam, izmantojot cilpu caur sorted_keys
  • vērtība: atrodiet atslēgai atbilstošo vērtību no desertu vārdnīcas, deserti[key]

Saliekot to visu kopā, mums ir vārdnīcas izpratnes izteiksme, kā parādīts zemāk.

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}

No iepriekš minētās izvades vārdnīcā sorted_desserts deserti ir sakārtoti alfabētiskā secībā.

Kā kārtot Python vārdnīcu pēc vērtības

Tālāk mēs uzzināsim, kā kārtot Python vārdnīcu pēc tās vērtībām.

Desertu vārdnīcā vērtības atbilst desertu cenām. Varat kārtot vārdnīcu pēc cenām pieaugošā vai dilstošā secībā.

▶️ Lai iegūtu visus atslēgu un vērtību pārus, varat izmantot iebūvēto vārdnīcas metodi .items(). Katrs kortežs ir atslēgas-vērtības pāris.

desserts.items()

dict_items([('Ice cream', 10), ('Brownies', 12), ('Cheesecake', 3), 
('Swiss roll', 5), ('Cookies', 4), ('Cup cake', 2)])

Katrs no vienumiem pats par sevi ir kopa. Tātad jūs varat arī indeksēt katru atslēgu un vērtību pāri, lai piekļūtu atslēgām un vērtībām atsevišķi.

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

Tā kā mēs vēlamies kārtot pēc vērtībām, mēs izmantosim iepriekš minēto metodi, lai iegūtu vērtību 1. indeksā atslēgu un vērtību pārī.

Kā kārtot Python vārdnīcas vērtības augošā secībā

Šoreiz mēs izmantosim funkciju sorted() kopā ar izvēles atslēgas parametru. taustiņš var būt jebkura Python funkcija, iebūvēta funkcija, lietotāja definēta funkcija vai pat a lambda funkcija.

  No 2020. gada marta visi transportlīdzekļi ir saderīgi ar Apple CarPlay

Piezīme: lambda args: izteiksme ir sintakse lambda funkciju definēšanai Python.

Šajā piemērā desertu šķirošanai pēc cenas mums ir piekļuve vārdnīcas vienumiem (atslēgas vērtību pāriem). Mēs iestatīsim taustiņu = lambda vienums: vienums[1] kā mēs vēlētos kārtot pēc vērtības (cenas).

Tā kā funkcija sorted() atgriež sarakstu pēc noklusējuma, jums tas ir skaidri jāievada diktā, kā parādīts tālāk.

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}

Varat arī pārrakstīt, izmantojot vārdnīcas izpratnekā tika apspriests iepriekš.

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}

Sadaļā sorted_desserts pirmā vienība ir Cup Cake, kuras cena ir 2 ASV dolāri, un brūnie ēdieni, kuru cena ir 12 ASV dolāri, ir pēdējā prece.

Kā kārtot Python vārdnīcas vērtības dilstošā secībā

Ja vēlaties kārtot cenas dilstošā secībā, varat iestatīt neobligāto apgriezto parametru uz True, kā paskaidrots tālāk.

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}

Tagad sorted_desserts ir sakārtoti cenu dilstošā secībā, sākot ar dārgāko desertu Brownies, kas maksā 12 USD.

Noslēgums 👩🏽‍💻

Ātri apkoposim visu, ko esam iemācījušies šajā apmācībā.

  • Python vārdnīca glabā datus atslēgu un vērtību pāros; visām atslēgām jābūt unikālām.
  • Šķirojot vārdnīcu pēc atslēgas vai vērtības, mēs izveidojam jaunu vārdnīcu, kas tiek sakārtota pēc vajadzības.
  • Varat izmantot iebūvētās vārdnīcas metodes .keys() un .items(), lai attiecīgi izgūtu visas atslēgas un atslēgu-vērtību pārus.
  • Varat izmantot funkciju sorted() kopā ar izvēles parametru taustiņu un apgriezties, lai sasniegtu vēlamo kārtošanu.

Tagad, kad esat iemācījies kārtot Python vārdnīcu, iemācieties kārtot Python sarakstus. Laimīgu kodēšanu!🎉