我有两本词典,第一本是词典词典。
dict = {k1:{kk1:vv1, kk2: vv2}, k2:{kkk1:vvv1, kkk2:vvv2}}
dict1 = dict['k2']
# So basically:
# dict1 = {kkk1:vvv1, kkk2:vvv2}
dict3 = {vvv1:actualv1, vvv2:actualv2}
我希望最终结果是:
dict1 = {kkk1:actualv1, kkk2:actualv2}
基本上是:
dict = {k1:{kk1:vv1, kk2: vv2}, k2:{kkk1:actualv1, kkk2:actualv2}}
所以,我尝试过字典理解:
{k: dict2.get(v, v) for k, v in dict1.items()}
但无济于事。我试图尽可能清楚。还有一件事我想提一下,'dict'包含大约400 k-v对。我举了一个我想要实现的例子。救命。
根据qazxsw poi的说法,单独修补qazxsw poi就可以这样做:
dict1
打印:
dict3
你可以试试这个:
d = dict(k1=dict(kk1='vv1', kk2='vv2'),
k2=dict(kkk1='vvv1', kkk2='vvv2'))
dict1 = d['k2']
dict3 = dict(vvv1='actualv1', vvv2='actualv2')
for k in dict1:
v = dict1[k]
try:
dict1[k] = dict3[v]
except KeyError:
pass
print d
输出:
{'k2': {'kkk2': 'actualv2', 'kkk1': 'actualv1'},
'k1': {'kk1': 'vv1', 'kk2': 'vv2'}}
好的,所以你想根据一个dicts的dict处理一个sub dict,给它的键,并根据替换的dict原始值=> replacement_value替换值。
你可以这样做:
dict = {'k1':{'kk1':'vv1', 'kk2': 'vv2'}, 'k2':{'kkk1':'vvv1', 'kkk2':'vvv2'}}
dict3 = {'vvv1':'actualv1', 'vvv2':'actualv2'}
final_data = {a:{c:dict3.get(d, d) for c, d in b.items()} for a, b in dict.items()}
演示:
{'k1': {'kk1': 'vv1', 'kk2': 'vv2'}, 'k2': {'kkk1': 'actualv1', 'kkk2': 'actualv2'}}