如何使用排序和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]))
什么是包含多个项目的值的“值”。 '['1','2']'是否大于'['1']'?你是用长度衡量'价值'还是通过平均每个清单中的价值? – 2012-07-30 21:19:30
通常是一个坏主意,因为它是一个类型 – inspectorG4dget 2012-07-30 21:20:13
变量名称的变量是“dict”,在这种情况下,值是通过列表长度来衡量的,而不是列表中的数字本身。 – user1530318 2012-07-30 21:36:50