【发布时间】:2016-06-11 21:21:18
【问题描述】:
我有一个对象是字典列表:
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)
会起作用的。如果不遍历列表、计算总和然后排序,我无法弄清楚如何做到这一点。这就是我现在正在做的事情,但我正试图通过删除循环来提高这段代码的效率,因为我的列表中有数以百万计的列表。
【问题讨论】:
-
请注意:在这种情况下,您不需要尾随
\行继续。由于行以逗号结尾并且列表文字仍然“打开”,Python 将自动期望下一行继续在那里。
标签: python list sorting dictionary