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

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

Vārdnīcas vērtību kārtošana programmā Python: īsa rokasgrāmata

Python vārdnīcas kārtošana pēc taustiņiem ir vienkārša, bet ko darīt, ja jums ir jākārto pēc vērtībām? Šis ir izplatīts scenārijs, strādājot ar vārdnīcām, kurās ir dati no datu bāzēm vai citiem datu avotiem, kur atslēgas ir unikālas virknes un vērtības ir ciparu lauki.

Lai gan šīs problēmas risināšanai bieži tiek izmantoti vārdnīcu saraksti, ir vienkāršāki risinājumi, ja vēlaties strādāt ar vienu vārdnīcu. Šajā rokasgrāmatā mēs izpētīsim, kā kārtot Python vārdnīcu pēc tās vērtībām augošā vai dilstošā secībā, izmantojot efektīvas un viegli saprotamas metodes.

Pavēli Apraksts
sorted() Iebūvēta funkcija, kas atgriež jaunu sakārtotu sarakstu no iterējamā vienumiem.
dict() Veido vārdnīcu Python valodā.
key=lambda item: item[1] Lambda funkcija, ko izmanto, lai norādītu, ka kārtošanai jābalstās uz vārdnīcas vērtībām.
reverse=True Parametrs funkcijā sorted(), lai kārtotu vienumus dilstošā secībā.
@app.route() Kolbas dekorētājs, ko izmanto, lai saistītu funkciju ar URL.
jsonify() Kolbas funkcija, lai pārvērstu Python objektus JSON formātā.

Izpratne par skriptiem vārdnīcas kārtošanai pēc vērtībām

Pirmais skripts parāda, kā kārtot vārdnīcu pēc tās vērtībām, izmantojot Python iebūvētās funkcijas. The sorted() funkcija tiek izmantota, lai kārtotu vārdnīcas vienumus. Pēc noklusējuma, sorted() sakārto vienumus augošā secībā, pamatojoties uz taustiņiem. Tomēr, nodrošinot pielāgotu taustiņu funkciju, izmantojot key=lambda item: item[1], mēs uzdodam Python kārtot, pamatojoties uz vārdnīcas vērtībām. The lambda funkcija izvelk vērtību no katra vārdnīcas vienuma, ļaujot sorted() funkciju, lai atbilstoši sakārtotu vārdnīcu. Lai saglabātu rezultātu atpakaļ vārdnīcā, dict() funkcija tiek izmantota. Turklāt, lai kārtotu vārdnīcu dilstošā secībā, reverse=True parametrs tiek nodots sorted() funkciju.

Otrais skripts balstās uz šķirošanas loģiku un integrē to Flask tīmekļa lietojumprogrammā. Flask ir viegls Python tīmekļa ietvars, kas ļauj viegli izveidot tīmekļa lietojumprogrammas. Šajā skriptā @app.route() dekorators saista sort_dict() funkciju URL maršrutam “/sort-dict”. Kad tiek piekļūts šim maršrutam, funkcija sakārto vārdnīcu gan augošā, gan dilstošā secībā, izmantojot to pašu loģiku kā pirmajā skriptā. The jsonify() Flask funkcija tiek izmantota, lai pārvērstu sakārtotās vārdnīcas JSON formātā, kas tiek atgriezta kā atbilde. Šī tīmekļa lietojumprogramma ļauj lietotājiem piekļūt sakārtotajām vārdnīcām, izmantojot tīmekļa pārlūkprogrammu, demonstrējot praktisku vārdnīcas vērtību šķirošanas piemēru tīmekļa kontekstā.

Vārdnīcas kārtošana pēc tās vērtībām programmā Python

Python skripts vārdnīcas vērtību kārtošanai

# Sample dictionary
data = {'apple': 3, 'banana': 1, 'cherry': 2}

# Sort dictionary by values in ascending order
sorted_data_asc = dict(sorted(data.items(), key=lambda item: item[1]))
print("Ascending order:", sorted_data_asc)

# Sort dictionary by values in descending order
sorted_data_desc = dict(sorted(data.items(), key=lambda item: item[1], reverse=True))
print("Descending order:", sorted_data_desc)

Kārtošanas ieviešana tīmekļa lietojumprogrammā

Kolbas lietojumprogramma vārdnīcas vērtību šķirošanai

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/sort-dict')
def sort_dict():
    data = {'apple': 3, 'banana': 1, 'cherry': 2}
    sorted_data_asc = dict(sorted(data.items(), key=lambda item: item[1]))
    sorted_data_desc = dict(sorted(data.items(), key=lambda item: item[1], reverse=True))
    return jsonify(ascending=sorted_data_asc, descending=sorted_data_desc)

if __name__ == '__main__':
    app.run(debug=True)

Uzlabotas metodes vārdnīcu šķirošanai pēc vērtībām

Kārtot vārdnīcas pēc vērtībām var arī, izmantojot itemgetter() funkcija no operator modulis, kas var būt lasāmāks un, iespējams, efektīvāks nekā lambda funkcijas izmantošana. The itemgetter() funkcija ļauj norādīt vienu vai vairākus taustiņus, lai izgūtu atbilstošās vērtības. Vārdnīcas kārtošanas kontekstā to var izmantot, lai norādītu, ka šķirošanas pamatā jābūt vārdnīcas vienumu vērtībām. Šī metode var būt īpaši noderīga, strādājot ar lielām vārdnīcām vai ja ir bažas par veiktspēju.

Turklāt ir svarīgi ņemt vērā kārtošanas ietekmi uz datu struktūrām. Lai gan vārdnīcas kārtošana pēc vērtībām un rezultāta saglabāšana jaunā vārdnīcā darbojas daudzos gadījumos, tā nesaglabā sākotnējo vienumu secību. Lietošanas gadījumos, kad kārtības uzturēšana ir ļoti svarīga, piemēram, ranžētu sarakstu ģenerēšanai vai ievietošanas secības saglabāšanai, izmantojot OrderedDict no collections modulis var būt piemērotāks. The OrderedDict saglabā vienumu secību, kad tie tiek ievietoti, padarot to ideāli piemērotu situācijām, kad elementu secība ir jāsaglabā arī pēc šķirošanas.

Bieži uzdotie jautājumi un atbildes par vārdnīcu šķirošanu pēc vērtībām

  1. Kā kārtot vārdnīcu pēc vērtībām augošā secībā?
  2. Izmantojiet sorted() funkcija ar lambda funkciju: sorted(data.items(), key=lambda item: item[1]).
  3. Kā kārtot vārdnīcu pēc vērtībām dilstošā secībā?
  4. Pievienojiet reverse=True parametru uz sorted() funkcija: sorted(data.items(), key=lambda item: item[1], reverse=True).
  5. Vai es varu kārtot vārdnīcu pēc vērtībām, neizmantojot lambda funkciju?
  6. Jā, izmantojiet itemgetter() funkcija no operator modulis: sorted(data.items(), key=itemgetter(1)).
  7. Ko darīt, ja manas vārdnīcas vērtības nav skaitliskas?
  8. Piemēro tās pašas metodes; varat kārtot pēc jebkura veida vērtības, kas atbalsta salīdzināšanas darbības.
  9. Kā saglabāt elementu secību pēc šķirošanas?
  10. Izmantojiet an OrderedDict no collections modulis kārtības uzturēšanai: OrderedDict(sorted(data.items(), key=lambda item: item[1])).
  11. Vai vārdnīcas šķirošana pēc vērtībām ir efektīva?
  12. Šķirojot vārdnīcu pēc vērtībām, laika sarežģītība ir O(n log n), kas ir efektīva vairumam lietošanas gadījumu.
  13. Vai es varu sakārtot vārdnīcu pēc tās vērtībām?
  14. Nē, Python vārdnīcas pēc savas būtības ir nesakārtotas pirms Python 3.7 un neatbalsta kārtošanu uz vietas. Jums ir jāizveido jauna sakārtota vārdnīca.
  15. Kā es varu efektīvāk kārtot lielu vārdnīcu pēc vērtībām?
  16. Apsveriet iespēju izmantot itemgetter() funkciju labākai lasāmībai un veiktspējai, vai izmantojiet specializētas datu struktūras liela mēroga šķirošanai.
  17. Vai es varu kārtot vārdnīcu pēc vairākiem kritērijiem?
  18. Jā, jūs varat nodot virkni uz key parametrs sadaļā sorted() funkcija kārtot pēc vairākiem kritērijiem: sorted(data.items(), key=lambda item: (item[1], item[0])).

Rokasgrāmatas noslēgums:

Izmantojot Python, vārdnīcas kārtošana pēc vērtībām ir vienkārša sorted() un lambda funkcijas vai itemgetter() no operatora moduļa. Šīs metodes ir efektīvas gan mazām, gan lielām datu kopām. Tīmekļa lietojumprogrammām šo paņēmienu integrēšana ar Flask piedāvā praktisku pieeju sakārtotu datu apstrādei un attēlošanai. Izpratne par šīm metodēm uzlabo jūsu spēju apstrādāt un efektīvi prezentēt datus Python.