我有一個輸入字典:
d={'AM-tv': 1.2,
'AM-rs': 1.3,
'AM-pq': 1.2,
'BR-MN': 1.3,
'BR-tN': 1.3,
'BR-tq': 1.4}
預期產出
d={'AM':{'tv':1.2,'rs':1.3,'pq':1.2},'BR':{'MN':1.3,'tN':1.3,'tq':1.4}
有沒有辦法從輸入字典對生成嵌套字典?
uj5u.com熱心網友回復:
一種方法是拆分鍵并用于dict.setdefault初始化內部字典:
out = {}
for k,v in d.items():
o,i = k.split('-')
out.setdefault(o, {})[i] = v
輸出:
{'AM': {'tv': 1.2, 'rs': 1.3, 'pq': 1.2},
'BR': {'MN': 1.3, 'tN': 1.3, 'tq': 1.4}}
uj5u.com熱心網友回復:
您可以遍歷items()which 將為您提供鍵/值對、split()鍵和分配。setdefault當它第一次看到外部鍵時,它有助于用新的空字典初始化內部字典:
d = {
'AM-tv': 1.2,
'AM-rs': 1.3,
'AM-pq': 1.2,
'BR-MN': 1.3,
'BR-tN': 1.3,
'BR-tq': 1.4
}
new_d = {}
for k, v in d.items():
k1, k2 = k.split('-')
new_d.setdefault(k1, {})[k2] = v
new_d將會:
{'AM': {'tv': 1.2, 'rs': 1.3, 'pq': 1.2},
'BR': {'MN': 1.3, 'tN': 1.3, 'tq': 1.4}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/469281.html
上一篇:從地圖kotlin中洗掉密鑰
下一篇:嵌套字典操作
