参见英文答案 > How do I sort a dictionary by value? 42个
我有一个字典,以元组为关键字,如:
d={('w1','u1'):3,('w1','u2'):8,('w2','u1'):1,('w1','u3'):11,('w2','u3'):6}
现在我想收集每个’w’的所有项目,即键中的第一个元素:
'w1' : ('w1','u1'):3 ('w1','u2'):8 ('w1','u3'):11 -------
'w2' : ('w2','u1'):1 ('w2','u3'):6
然后按值排序每一行得到:
'w1' : 'u3':11 'u2':8 'u1':3 -------
'w2' : 'u3':6 'u1':1
任何人都可以给我一些暗示吗?谢谢
解决方法:
这给了你想要的东西,排序.但它最后不在字典中,因为你无法对字典进行排序.
d={('w1','u1'):3,('w1','u2'):8,('w2','u1'):1,('w1','u3'):11,('w2','u3'):6}
d2 = {}
for (w,u) , value in d.items():
if w not in d2:
d2[w] = [(u,value)]
else:
d2[w].append((u, value))
for key, values in d2.items():
print key, ":\t", sorted(values, key=lambda x: -x[1]), "\n"
这使:
w2 : [('u3', 6), ('u1', 1)]
w1 : [('u3', 11), ('u2', 8), ('u1', 3)]