Python-Wörterbuchliste nach gemeinsamem Schlüssel sortieren (mithilfe der Itemgetter-Funktion)

不言
Freigeben: 2018-10-20 14:48:10
nach vorne
2541 Leute haben es durchsucht

In diesem Artikel geht es um das Sortieren von Wörterbuchlisten nach öffentlichen Schlüsseln (mithilfe der Itemgetter-Funktion). Ich hoffe, dass er für Sie hilfreich ist.

1. Anforderungen

Wir haben eine Liste mit Wörterbüchern und möchten die Liste nach den Werten in einem oder mehreren Wörterbüchern sortieren.

2. Lösung

Es ist sehr einfach, die Itemgetter-Funktion im Operatormodul zu verwenden, um solche Strukturen zu sortieren.

Beispiel:

from operator import itemgetter
rows=[
{'name':'mark','age':18,'uid':'110'},
{'name':'miaomiao','age':28,'uid':'150'},
{'name':'miaomiao','age':8,'uid':'150'},
{'name':'xiaohei','age':38,'uid':'130'},
]

rows_by_name=sorted(rows,key=itemgetter('name'))
rows_by_uid=sorted(rows,key=itemgetter('uid'))
print(rows_by_name)
print(rows_by_uid)


#itemgetter还支持多个键
rows_by_name_age=sorted(rows,key=itemgetter('name','age'))
print(rows_by_name_age)

#itemgetter同样适用min、max
print(min(rows,key=itemgetter('uid')))
print(max(rows,key=itemgetter('age')))
Nach dem Login kopieren

Laufergebnis:

[{'name': 'mark', 'age': 18, 'uid': '110'}, {'name': 'miaomiao', 'age': 28, 'uid': '150'}, {'name': 'miaomiao', 'age': 8, 'uid': '150'}, {'name': 'xiaohei', 'age': 38, 'uid': '130'}]
[{'name': 'mark', 'age': 18, 'uid': '110'}, {'name': 'xiaohei', 'age': 38, 'uid': '130'}, {'name': 'miaomiao', 'age': 28, 'uid': '150'}, {'name': 'miaomiao', 'age': 8, 'uid': '150'}]
[{'name': 'mark', 'age': 18, 'uid': '110'}, {'name': 'miaomiao', 'age': 8, 'uid': '150'}, {'name': 'miaomiao', 'age': 28, 'uid': '150'}, {'name': 'xiaohei', 'age': 38, 'uid': '130'}]
{'name': 'mark', 'age': 18, 'uid': '110'}
{'name': 'xiaohei', 'age': 38, 'uid': '130'}
Nach dem Login kopieren

Diskussion

In diesem Beispiel werden Zeilen an die integrierte Funktion sorted() übergeben, die Die Funktion akzeptiert ein Schlüsselwortargument key, das ein aufrufbares Objekt darstellen sollte, das ein einzelnes Element aus Zeilen als Eingabe akzeptiert und einen zum Sortieren verwendeten Wert zurückgibt. Die Funktion itemgetter() erstellt ein solches aufrufbares Objekt.

Die von der Funktion „operator.itemgetter()“ akzeptierten Parameter können als Abfragemarkierungen verwendet werden, um die erforderlichen Werte aus den Zeilendatensätzen zu extrahieren. Dabei kann es sich um den Namen eines Wörterbuchschlüssels, ein numerisches Listenelement oder einen beliebigen Wert handeln, der an die Methode __getitem__() des Objekts übergeben werden kann. Wenn Sie mehrere Tags an itemgetter() übergeben, gibt das von ihm generierte Callable ein Tupel zurück, das alle Elemente enthält, und dann ordnet sorted() die Ausgabe entsprechend dem Sortierergebnis des Tupels an. Dies ist sehr nützlich, wenn Sie nach mehreren Feldern gleichzeitig sortieren möchten.

Manchmal wird ein Lambda-Ausdruck verwendet, um die Funktion von itemgetter() zu ersetzen, zum Beispiel:

rows_by_uid=sorted(rows,key=lambda r:r['uid'])
rows_by_name_age=sorted(rows,key=lambda r:(r['name','age']))
Nach dem Login kopieren

Diese Lösung funktioniert normalerweise gut. Aber die Verwendung von itemgetter() läuft normalerweise schneller. Wenn Sie daher Leistungsprobleme berücksichtigen müssen, sollten Sie itemgetter() verwenden.

Das obige ist der detaillierte Inhalt vonPython-Wörterbuchliste nach gemeinsamem Schlüssel sortieren (mithilfe der Itemgetter-Funktion). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!