使用排序和lambda表达式怎么样?
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]))
['1', '2']
是否大于['1']
?您是通过长度还是通过每个列表中的值的平均值来衡量“价值”的? - Joel Cornett