У меня есть объект, который является списком списков словарей:Сортировка списка списков словарей в 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" }]]
Я хочу, чтобы отсортировать список по сумме play
значений в словарях каждой вложенной список. Объект затем будет отсортирован, как это:
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" }]]
Если бы это было просто список dicts затем:
sorted(myObject, key=sum(map(itemgetter(play))), reverse=True)
будет работать. Я не могу понять, как это сделать, не перебирая список, вычисляя сумму, а затем сортируя. Это то, что я делаю сейчас, но я пытаюсь повысить эффективность этого кода, удалив циклы, потому что в моем списке насчитывается 100 миллионов миллионов списков.
Как примечание: в этом случае вам не нужны завершающие '' '' '' продолжения строки. Поскольку строки заканчиваются запятой, а литералы в списке все еще «открыты», Python автоматически ожидает, что следующая строка продолжит работу там. – poke