我通過運行一些分析創建了以下代碼,并將結果放入 defaultdict(list) 中。之后我將結果放入一個 csv 檔案中。我想對我回傳的值進行排序,以便更重要的專案排在最前面。
我想通過“Check1”從最大到最小對我的 defaultdict(list) 進行排序。
我將如何對值進行排序,以便對于每個鍵(地址),具有最高“Check1”的字典首先出現?
defaultdict(list,
{'Address_1': [{'Name': 'name',
'Address_match': 'address_match_1',
'ID': 'id',
'Type': 'abc',
'Check1' : 8,
'Check2' : 1},
{'Name': 'name',
'Address_match': 'address_match_2',
'ID': 'id',
'Type': 'abc',
'Check1' : 20,
'Check2' : 1},
{'Name': 'name',
'Address_match': 'address_match_3',
'ID': 'id',
'Type': 'abc',
'Check1' : 27,
'Check2' : 1}],
'Address_2': [{'Name': 'name',
'Address_match': 'address_match_1',
'ID': 'id',
'Type': 'abc',
'Check1' : 30,
'Check2' : 1},
{'Name': 'name',
'Address_match': 'address_match_2',
'ID': 'id',
'Type': 'abc',
'Check1' : 38,
'Check2' : 1},
{'Name': 'name',
'Address_match': 'address_match_3',
'ID': 'id',
'Type': 'abc',
'Check1' : 12,
'Check2' : 1}]})
結果如下所示:
defaultdict(list, {'Address_1': [{'Name': 'name',
'Address_match': 'address_match_1',
'ID': 'id',
'Type': 'abc',
'Check1' : 27,
'Check2' : 1},
{'Name': 'name',
'Address_match': 'address_match_2',
'ID': 'id',
'Type': 'abc',
'Check1' : 20,
'Check2' : 1},
{'Name': 'name',
'Address_match': 'address_match_3',
'ID': 'id',
'Type': 'abc',
'Check1' : 8,
'Check2' : 1}],
'Address_2': [{'Name': 'name',
'Address_match': 'address_match_1',
'ID': 'id',
'Type': 'abc',
'Check1' : 38,
'Check2' : 1},
{'Name': 'name',
'Address_match': 'address_match_2',
'ID': 'id',
'Type': 'abc',
'Check1' : 30,
'Check2' : 1},
{'Name': 'name',
'Address_match': 'address_match_3',
'ID': 'id',
'Type': 'abc',
'Check1' : 12,
'Check2' : 1}]})
uj5u.com熱心網友回復:
您可以通過使用sorted函式 dict 理解來獲得預期的結果。
具體來說,我們可以遍歷 defaultdict 字典的鍵值對(其中每個值都是一個字典串列),并'Check1'根據每個串列中每個字典的鍵對每個值(即字典串列)進行排序。sorted默認情況下按升序排序,但由于我們要按降序排序,因此我們添加-符號以按正確順序排序。
out = {k: sorted(lst, key=lambda x: -x.get('Check1')) for k, lst in your_defaultdict.items()}
輸出:
{'Address_1': [{'Name': 'name',
'Address_match': 'address_match_3',
'ID': 'id',
'Type': 'abc',
'Check1': 27,
'Check2': 1},
{'Name': 'name',
'Address_match': 'address_match_2',
'ID': 'id',
'Type': 'abc',
'Check1': 20,
'Check2': 1},
{'Name': 'name',
'Address_match': 'address_match_1',
'ID': 'id',
'Type': 'abc',
'Check1': 8,
'Check2': 1}],
'Address_2': [{'Name': 'name',
'Address_match': 'address_match_2',
'ID': 'id',
'Type': 'abc',
'Check1': 38,
'Check2': 1},
{'Name': 'name',
'Address_match': 'address_match_1',
'ID': 'id',
'Type': 'abc',
'Check1': 30,
'Check2': 1},
{'Name': 'name',
'Address_match': 'address_match_3',
'ID': 'id',
'Type': 'abc',
'Check1': 12,
'Check2': 1}]}
uj5u.com熱心網友回復:
不知道是什么問題,很簡單:
for key, values in dictionary.items():
values.sort(key=lambda value: value['Check1'], reverse=True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390242.html
