我有一個這樣的輸入字典
dict1= {'AM': ['tv', 'rs', 'pq', 'MN', 'tN', 'tq', 'OP', 'tP', 'QR', 'tr'],
'BR': ['tv', 'rs', 'pq', 'MN', 'tN', 'tq', 'OP', 'tP', 'QR', 'tr']}
我要搜索的另外兩個字典是
dict2_1={'AM':{'pq':1.2,'rs':2.41,'tv':3.81},'BR':{'MN':1.3,'OP':1.41,'QR':1.81}}
dict3_1={'AM':{'tq':1.3,'rs':1.41,'tv':2.41},'BR':{'tN':1.8,'tP':1.81,'tr':1.42}}
預期產出
{'AM-tv': (3.81,2.41),
'AM-rs': (2.41,1.41),
'AM-pq': (1.2,'insert'),
'AM-MN': ('insert','insert'),
'AM-tN': ('insert','insert'),
'AM-tq': ('insert',1.3),
'AM-OP': ('insert','insert'),
'AM-tP': ('insert','insert'),
'AM-QR': ('insert','insert'),
'AM-tr': ('insert','insert'),
'BR-tv': ('insert','insert'),
'BR-rs': ('insert','insert'),
'BR-pq': ('insert','insert'),
'BR-MN': (1.3,'insert'),
'BR-tN': ('insert',1.8),
'BR-tq': ('insert','insert'),
'BR-OP': (1.41,'insert'),
'BR-tP': ('insert',1.81),
'BR-QR': (1.81,'insert'),
'BR-tr': ('insert',1.42)}
在輸出中,需要生成 dict1 對。如果 dict1 的值存在于 dict2_1 或 dict2_2 的內部嵌套字典鍵中,則它將替換為內部嵌套字典值,否則它將替換為“插入”。有什么辦法嗎?
uj5u.com熱心網友回復:
dict.get
如果字典中不存在鍵(在本例中為“插入”),您可以使用設定默認值:
out = {}
for k, lst in dict1.items():
for v in lst:
out[f"{k}-{v}"] = (dict2_1[k].get(v, 'insert'), dict3_1[k].get(v, 'insert'))
上面的代碼也可以寫成dict理解:
out = {f"{k}-{v}": (dict2_1[k].get(v, 'insert'), dict3_1[k].get(v, 'insert')) for k, lst in dict1.items() for v in lst}
輸出:
{'AM-tv': (3.81, 2.41),
'AM-rs': (2.41, 1.41),
'AM-pq': (1.2, 'insert'),
'AM-MN': ('insert', 'insert'),
'AM-tN': ('insert', 'insert'),
'AM-tq': ('insert', 1.3),
'AM-OP': ('insert', 'insert'),
'AM-tP': ('insert', 'insert'),
'AM-QR': ('insert', 'insert'),
'AM-tr': ('insert', 'insert'),
'BR-tv': ('insert', 'insert'),
'BR-rs': ('insert', 'insert'),
'BR-pq': ('insert', 'insert'),
'BR-MN': (1.3, 'insert'),
'BR-tN': ('insert', 1.8),
'BR-tq': ('insert', 'insert'),
'BR-OP': (1.41, 'insert'),
'BR-tP': ('insert', 1.81),
'BR-QR': (1.81, 'insert'),
'BR-tr': ('insert', 1.42)}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/469289.html
上一篇:如何從多個字典創建資料框
下一篇:以串列為值的字典