使用排序和 lambdas 怎么样?
#!/usr/bin/env python
d = {'a': ['1'], 'b': ['1', '2'], 'c': ['8', '1'], 'd':['1'], 'e':['1', '2', '3'], 'f': [4, 1]}
sorted_by_sum_d = sorted(d, key=lambda key: sum(list(int(item) for item in d[key])))
sorted_by_length_d = sorted(d, key=lambda key: len(d[key]))
print "Sorted by sum of the items in the list : %s" % sorted_by_sum_d
print "Sorted by length of the items in the list : %s" % sorted_by_length_d
这将输出:
Sorted by sum of the items in the list : ['a', 'd', 'b', 'f', 'e', 'c']
Sorted by length of the items in the list : ['a', 'd', 'c', 'b', 'f', 'e']
请注意我更改了初始'd'
字典(只是为了确保它正常工作)
然后,如果您想要总和最大的项目,您将获得sorted_by_sum_d
列表的最后一个元素。
(不过,我不太确定这是你想要的)
编辑:
如果您可以确保列表始终是整数列表(或数字类型,例如long
,float
...),则无需将字符串转换为整数。变量的计算sorted_by_sum_d
可以简单地使用:
d = {'a': [1], 'b': [1, 2], 'c': [8, 1], 'd':[1], 'e':[1, 2, 3], 'f': [4, 1]}
sorted_by_sum_d = sorted(d, key=lambda key: sum(d[key]))