将值从列表循环中的另一个字典追加到字典

时间:2020-10-28 10:20:48

标签: python-3.x

我努力将一个值附加到所有都位于列表中的另一个字典中(这意味着要进行迭代) 我是python的初学者,所以如果有人可以帮助我:) 这是我尝试做的事的一个例子:

dict_a = [ 
{ 'key1' : 'name',
  'key2' : 'int1',
  'key3' : 'useless',
  'key4' : 'valtest'},

{ 'key1' : 'name',  
  'key2' : 'int2',
  'key3' : 'useless',
  'key4' : 'valtest' }]

dict_b = [
{ 'a' : '1',
  'b' : 'name',
  'c' : '3',
  'd' : 'int0',
  'e' : 'id0' },

{ 'a' : '1',
  'b' : 'name',
  'c' : '3',
  'd' : 'int1',
  'e' : 'id1' },

{ 'a' : '1',
  'b' : 'name',
  'c' : '3',
  'd' : 'int2',
  'e' : 'id2' },

{ 'a' : '1',
  'b' : 'name',
  'c' : '3',
  'd' : 'int3',
  'e' : 'id3' },

{ 'a' : '1',
  'b' : 'name',
  'c' : '3',
  'd' : 'int1',
  'e' : 'id4' }]

这是我想要获得的结果:

dict_c = [ 
{ 'key1' : 'name',
  'key2' : 'int1',
  'key3' : 'useless',
  'key4' : 'valtest',
  'key5' : 'id1'},

{ 'key1' : 'name',
  'key2' : 'int2',
  'key3' : 'useless',
  'key4' : 'valtest',
  'key5' : 'id2'}]

根据条件key1 = b和key2 = d,请注意dict_c上的'key5'在dict_b上为'e'

以我的小知识,我已经尝试过:

for v in dict_a and vv in dict_b:
  if v['key1'] == vv['b'] and v['key2'] == vv['d']:
    v['key5'] = vv['e']

,但有时回溯说: NameError:名称“ vv”未定义

有时: TypeError:“ bool”对象不可迭代

我如何获得结果?

预先感谢

1 个答案:

答案 0 :(得分:0)

您快到了,我就认真修改您的代码:

for v in dict_a and vv in dict_b:
    if v['key1'] == vv['b'] and v['key2'] == vv['d']:
        v['key5'] = vv['e']

收件人

for v in dict_a:
    for vv in dict_b:
        if v['key1'] == vv['b'] and v['key2'] == vv['d']:
            v['key5'] = vv['e']

在沙箱中检查以下代码: python sandbox