如何使用排序和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