Python:使用值将元组作为键的排序字典

参见英文答案 > 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)] 
上一篇:leetcode 1046 最后一块石头的重量


下一篇:(十)WebGIS中地理坐标与屏幕坐标间的转换原理