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')))
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'}
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']))
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!