Python:通过值将字典与元组进行排序
这个问题在这里已经有了答案:
这给你想要的,排序。 但最终不在字典中,因为你无法对字典进行排序。
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)]
鉴于你所追求的最终dict
,在我看来你不需要排序。 只需遍历键值对,然后将它们重新排列成一个新的字典:
d = {('w1', 'u1'): 3, ('w1', 'u2'): 8, ('w2', 'u1'): 1, ('w1', 'u3'): 11,
('w2', 'u3'): 6}
result = {}
for (w, u), val in d.iteritems():
result.setdefault(w, {})[u] = val
print(result)
产量
{'w2': {'u1': 1, 'u3': 6}, 'w1': {'u1': 3, 'u3': 11, 'u2': 8}}
链接地址: http://www.djcxy.com/p/18159.html
上一篇: Python: sort dictionary with tuples as key by the value