Sortieren einer Liste von dicts von dict-Werte
Habe ich eine Liste von Wörterbüchern:
[{'title':'New York Times', 'title_url':'New_York_Times','id':4},
{'title':'USA Today','title_url':'USA_Today','id':6},
{'title':'Apple News','title_url':'Apple_News','id':2}]
Ich würde gerne zu Sortieren, indem Sie die Titel, also Elemente, die mit Einem gehen, bevor Z:
[{'title':'Apple News','title_url':'Apple_News','id':2},
{'title':'New York Times', 'title_url':'New_York_Times','id':4},
{'title':'USA Today','title_url':'USA_Today','id':6}]
Was ist der beste Weg, dies zu tun?
Auch gibt es eine Möglichkeit sicherzustellen, dass die Reihenfolge der einzelnen dictionary-Schlüssel bleibt konstant, z.B., immer Titel, title_url, dann id?
- Darf ich Fragen, warum Sie brauchen, um eine sortierte dict? In der Regel sind Sie den Zugriff auf ein dict über die Tasten eh, so ist die Reihenfolge egal.
- Äh, es ist eine Liste von dicts Felix.
- Ja ich sehe... aber trotzdem seine zweite Frage zielt auf diese 😉
- dupe um ein Vielfaches
- möglich, Duplikat der In Python, wie Sortiere ich eine Liste der Wörterbücher, die durch die Werte des dictionary?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sortieren mit mehreren Tasten verwenden, vorausgesetzt, alle in aufsteigender Reihenfolge:
key
ziehen und das entsprechende Attribut ist richtiger/sauberer als nur mit einemlambda
wie die sort-FunktionDie hypoallergene alternative für diejenigen, die niesen, nachdem er von lambdas:
Call
.sort(fn)
auf der Liste, wofn
ist eine Funktion, die vergleicht den Titel Werte und gibt das Ergebnis des Vergleichs.In späteren Versionen von Python, obwohl (2.4+), es ist viel besser, verwenden Sie einfach eine Art Schlüssel:
Auch Wörterbücher sind garantiert zu halten Ihre Ordnung, waren Sie zur Iteration über die Schlüssel/Werte, solange es keine weiteren Ergänzungen/entfernen. Wenn Sie Elemente hinzufügen oder entfernen, aber alle Wetten sind aus, es gibt keine Garantie, für, die.
Obwohl diese nur sortiert die Titel und Reihenfolge nach, die nicht definiert ist. Auf diese Weise mehrere Ebenen wäre schmerzhaft, auf diese Weise.
cmp
veraltet ist, mit guten Grund, wiekey
ist viel besser. Sortierung auf mehreren Ebenen ist einfach: verwenden Sie die Tupel, siehe Kenny ' s Antwort