如何对两个字典之间的值进行就地更改,前提是dictionary1中的值与dictionary2中的Key相同?

问题描述 投票:0回答:3

我有两本词典,第一本是词典词典。

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对。我举了一个我想要实现的例子。救命。

python dictionary
3个回答
0
投票

根据qazxsw poi的说法,单独修补qazxsw poi就可以这样做:

dict1

打印:

dict3

0
投票

你可以试试这个:

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'}}

0
投票

好的,所以你想根据一个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'}}
© www.soinside.com 2019 - 2024. All rights reserved.