是否有任何技巧可以輕松地將串列轉換為具有這種特定格式的字典?我一直無法這樣做。
從 :
a = [
('A', 'B', 8),
('A', 'D', 10),
('A', 'E', 12),
('B', 'C', 6),
('B', 'F', 12),
('C', 'F', 8),
('D', 'E', 10),
('D', 'G', 30),
('E', 'F', 10),
('F', 'G', 12)
]
到 :
b = {
"A": {"B": 8, "D": 10, "E": 12},
"B": {"C": 6, "F": 12},
"C": {"F": 8},
"D": {"E": 10, "G": 30},
"E": {"F": 10},
"F": {"G": 12}
}
在此先感謝您的提示
uj5u.com熱心網友回復:
defaultdict從集合模塊中使用:
from collections import defaultdict
b = defaultdict(dict)
for k, k1, v in a:
b[k].update({k1: v})
輸出:
>>> b
defaultdict(dict,
{'A': {'B': 8, 'D': 10, 'E': 12},
'B': {'C': 6, 'F': 12},
'C': {'F': 8},
'D': {'E': 10, 'G': 30},
'E': {'F': 10},
'F': {'G': 12}})
沒有的替代版本defaultdict:
b = {}
for k, k1, v in a:
t = b.setdefault(k, {})
t[k1] = v
uj5u.com熱心網友回復:
回圈串列,檢查鍵是否在字典中。如果是,則添加到該鍵的字典中。如果不是,則創建密鑰字典:
a = [
('A', 'B', 8),
('A', 'D', 10),
('A', 'E', 12),
('B', 'C', 6),
('B', 'F', 12),
('C', 'F', 8),
('D', 'E', 10),
('D', 'G', 30),
('E', 'F', 10),
('F', 'G', 12)
]
final_list = {}
for item in a:
if item[0] in final_list.keys():
final_list[item[0]][item[1]] = item[2]
else:
final_list[item[0]] = {item[1]: item[2]}
print(final_list)
uj5u.com熱心網友回復:
如果第一級鍵按分組順序,您可以在字典理解中使用 itertools 中的 groupby:
from itertools import groupby
d = { k:{c:n for _,c,n in v} for k,v in groupby(a,key=lambda t:t[0]) }
print(d)
{'A': {'B': 8, 'D': 10, 'E': 12},
'B': {'C': 6, 'F': 12},
'C': {'F': 8},
'D': {'E': 10, 'G': 30},
'E': {'F': 10},
'F': {'G': 12}}
uj5u.com熱心網友回復:
這是一個初學者友好的代碼。
- 我們解包元組并將值放入單個變數中
- 如果鍵已經在 中
dic,則表示字典已經存在,我們只需添加另一對。 - 否則,我們在
dic其中創建一個新的鍵值對,其中的值是一個字典。
list = [
('A', 'B', 8),
('A', 'D', 10),
('A', 'E', 12),
('B', 'C', 6),
('B', 'F', 12),
('C', 'F', 8),
('D', 'E', 10),
('D', 'G', 30),
('E', 'F', 10),
('F', 'G', 12)
]
dic = {}
for tuple in list:
key, element, num = tuple
if key in dic:
dic[key][element] = num
else:
dic[key] = {element: num}
for k, v in dic.items():
print(f"{k}: {v}")
輸出:
{
"A": {"B": 8, "D": 10, "E": 12},
"B": {"C": 6, "F": 12},
"C": {"F": 8},
"D": {"E": 10, "G": 30},
"E": {"F": 10},
"F": {"G": 12}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/406124.html
標籤:
下一篇:根據單元格值添加行
