有沒有辦法從python中的嵌套字典生成對?我有一個輸入字典:
d1 = {'AB':{'BCA':1.2, 'CBA':2.41, 'BCD':3.81},
'DA':{'ADA':1.3, 'BMA':1.41, 'DMA':1.81}}
d2 = { 'AB':{'MNA':1.3,'CMA':1.41,'BCD':2.41},
'DA':{'ADA':1.8, 'BMA':1.81, 'BTA':1.42}}
預期輸出:
d3= {('AB'-'BCA'):(1.2,new),
('AB'-'CBA'):(2.41,new),
('AB'-'BCD):(3.81,2.41),
('AB'-'MNA'):(new,1.3),
('AB'-'CMA'):(new,1.41),
('DA'-'ADA'):(1.3,1.8),
('DA'-'BMA'):(1.41,1.81),
('DA'-'DMA'):(1.81,new),
('DA'-'BTA'): (new,11.42)}
有沒有辦法從輸入嵌套字典產生這個輸出?如果內部字典的鍵不存在于另一個內部字典中,那么在這種情況下它會用“新”替換它并維護另一個字典?
uj5u.com熱心網友回復:
您可以在 中迭代頂級鍵,使用andd1中的鍵查找第二級字典中的所有鍵,然后使用默認值構建新字典以填充空槽:d1d2dict.get'new'
d3 = {}
for l1key in d1:
for l2key in set(d1[l1key].keys()) | set(d2[l1key].keys()):
d3[f'{l1key} - {l2key}'] = (d1[l1key].get(l2key, 'new'), d2[l1key].get(l2key, 'new'))
輸出:
{
'AB - CBA': (2.41, 'new'),
'AB - MNA': ('new', 1.3),
'AB - BCA': (1.2, 'new'),
'AB - BCD': (3.81, 2.41),
'AB - CMA': ('new', 1.41),
'DA - BMA': (1.41, 1.81),
'DA - BTA': ('new', 1.42),
'DA - DMA': (1.81, 'new'),
'DA - ADA': (1.3, 1.8)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/465143.html
標籤:Python python-3.x 字典 嵌套的 元组
上一篇:如何將物件串列轉換為地圖?
