我有以下字典:
defaultdict(<class 'list'>, {'A': [('ID1', 'Frank', 7), ('ID2', 'Peter', 1), ('ID3', 'Geoerge', 6)], 'B': [('ID1', 'FrankGeorge', 2)], 'C': [('ID1', 'Renz', 10), ('ID10', 'Mueller', 5), ('ID7', 'Dan', 2)]})
對于字典中的每個鍵,我希望元組按第三個元素排序。這是預期的結果:
{'A': [('ID2', 'Peter', 1), ('ID3', 'Geoerge', 6), ('ID1', 'Frank', 7)], 'B': [(' ID1', 'FrankGeorge', 2)], 'C': [ ('ID7', 'Dan', 2), ('ID10', 'Mueller', 5),('ID1', 'Renz', 10 ), ]}
我嘗試運行 sorted 函式,但它僅通過更改鍵順序對 dict 進行排序。這不是我想要的。密鑰的順序需要相同。A,B,C 只是一個例子。可能遠不止這些。
uj5u.com熱心網友回復:
嘗試:
from collections import defaultdict
d = defaultdict(
list,
{
"A": [("ID1", "Frank", 7), ("ID2", "Peter", 1), ("ID3", "Geoerge", 6)],
"B": [("ID1", "FrankGeorge", 2)],
"C": [("ID1", "Renz", 10), ("ID10", "Mueller", 5), ("ID7", "Dan", 2)],
},
)
for v in d.values():
v.sort(key=lambda k: k[2])
print(d)
印刷:
defaultdict(<class 'list'>, {'A': [('ID2', 'Peter', 1), ('ID3', 'Geoerge', 6), ('ID1', 'Frank', 7)], 'B': [('ID1', 'FrankGeorge', 2)], 'C': [('ID7', 'Dan', 2), ('ID10', 'Mueller', 5), ('ID1', 'Renz', 10)]})
uj5u.com熱心網友回復:
對于 Python 3.7 字典保留順序。
from collections import defaultdict
d = defaultdict(
list,
{
'A': [('ID1', 'Frank', 7), ('ID2', 'Peter', 1), ('ID3', 'Geoerge', 6)],
'B': [('ID1', 'FrankGeorge', 2)],
'C': [('ID1', 'Renz', 10), ('ID10', 'Mueller', 5), ('ID7', 'Dan', 2)]
}
)
sortedD = defaultdict(list, {k: sorted(v, key=lambda item: item[2]) for k, v in d.items()})
print(sortedD)
預期產出
defaultdict(<class 'list'>, {'A': [('ID2', 'Peter', 1), ('ID3', 'Geoerge', 6), ('ID1', 'Frank', 7)], 'B': [('ID1', 'FrankGeorge', 2)], 'C': [('ID7', 'Dan', 2), ('ID10', 'Mueller', 5), ('ID1', 'Renz', 10)]})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/447784.html
標籤:python-3.x 列表 字典
