我有一个对象,它是一个字典列表的列表:
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" }]]
如果只是一个字典列表,那么以下代码可以实现排序:
sorted(myObject, key=sum(map(itemgetter(play))), reverse=True)
但我无法想出在不循环列表、计算总和并进行排序的情况下如何实现。目前我的做法就是这样,但由于我的列表中有数亿个列表,所以我正在尝试通过去除循环来提高代码的效率。