use*_*334 1 python sorting dictionary
我想基于其中一个列表对字典的值(列表)进行排序.比如说我有字典:
data = {'AttrA':[2,4,1,3],'AttrB':[12,43,23,25],'AttrC':['a','d','f','z']}
Run Code Online (Sandbox Code Playgroud)
我想根据与AttrA相关的值对此进行排序,这样:
data = {'AttrA':[1,2,3,4],'AttrB':[23,12,25,43],'AttrC':['f','a','z','d']}
Run Code Online (Sandbox Code Playgroud)
先感谢您!
根据data['AttrA']源列表对字典中的每个值进行排序,使用sorted()和zip(),只需3行代码:
base = data['AttrA'] # keep a reference to the original sort order
for key in data:
data[key] = [x for (y,x) in sorted(zip(base, data[key]))]
Run Code Online (Sandbox Code Playgroud)
演示:
>>> data = {'AttrA': [2, 4, 1, 3], 'AttrB': [12, 43, 23, 25], 'AttrC': ['a', 'd', 'f', 'z']}
>>> base = data['AttrA']
>>> for key in data:
... data[key] = [x for (y,x) in sorted(zip(base, data[key]))]
...
>>> data
{'AttrB': [23, 12, 25, 43], 'AttrC': ['f', 'a', 'z', 'd'], 'AttrA': [1, 2, 3, 4]}
Run Code Online (Sandbox Code Playgroud)