ho un oggetto che è una lista di liste di dizionari:ordinamento di un elenco di liste di dizionari 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" }]]
voglio ordinare l'elenco per la somma dei play
valori nei dizionari di ogni annidato elenco. L'oggetto sarebbe quindi essere ordinata in questo modo:
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" }]]
Se fosse solo un elenco di dicts poi:
sorted(myObject, key=sum(map(itemgetter(play))), reverse=True)
avrebbe funzionato. Non riesco a capire come farlo senza dover scorrere l'elenco, calcolare la somma, quindi ordinare. Questo è quello che sto facendo ora, ma sto cercando di aumentare l'efficienza di questo codice rimuovendo i loop perché il mio elenco contiene centinaia di milioni di liste.
Proprio come una nota: in questo caso non sono necessarie le continuazioni di riga '' \ ''. Poiché le righe terminano con una virgola e i letterali delle liste sono ancora "aperti", Python si aspetta automaticamente che la riga successiva continui lì. – poke