Ich habe ein Objekt, das eine Liste von Listen von Wörterbüchern ist:Sortieren einer Liste von Listen der Wörterbücher in Python
myObject =[[{ "play": 5.00, "id": 1, "uid": "abc" }, \
{ "play": 1.00, "id": 2, "uid": "def" }], \
[{ "play": 6.00, "id": 3, "uid": "ghi" }, \
{ "play": 7.00, "id": 4, "uid": "jkl" }], \
[{ "play": 3.00, "id": 5, "uid": "mno" }, \
{ "play": 1.00, "id": 6, "uid": "pqr" }]]
Ich möchte durch die Summe der play
Werte in den Wörterbüchern jeder verschachtelt die Liste sortieren Liste. Das Objekt würde dann wie folgt sortiert werden:
myObject =[[{ "play": 6.00, "id": 3, "uid": "ghi" }, \
{ "play": 7.00, "id": 4, "uid": "jkl" }], \
[{ "play": 5.00, "id": 1, "uid": "abc" }, \
{ "play": 1.00, "id": 2, "uid": "def" }], \
[{ "play": 3.00, "id": 5, "uid": "mno" }, \
{ "play": 1.00, "id": 6, "uid": "pqr" }]]
Wenn es nur eine Liste von dicts war dann:
sorted(myObject, key=sum(map(itemgetter(play))), reverse=True)
funktionieren würde. Ich kann nicht herausfinden, wie das geht, ohne die Liste zu überfliegen, die Summe zu berechnen und dann zu sortieren. Genau das mache ich jetzt, aber ich versuche, die Effizienz dieses Codes durch das Entfernen von Schleifen zu erhöhen, weil meine Liste 100 Millionen von Listen enthält.
Nur als eine Anmerkung: Sie brauchen die abschließenden '' '' Zeilenfortsetzungen in diesem Fall nicht. Da die Zeilen mit einem Komma enden und die Listen-Literale immer noch "offen" sind, erwartet Python automatisch, dass die nächste Zeile dort weiterläuft. – poke