如果我有字典A:
{ 'name': 'Jack',
'age': 24,
'friends': ['Bob', 'Alice', 'Karen'],
}
我有字典B:
{ 'name': 'Jack',
'favorite_color': 'blue',
'friends': ['Daren'],
}
如何组合它们以使结果只包含字典A中的字段,并且两个具有相同字段的字段根据B中的值更新A中的值。当字段是附加到它的数组时而不是替换它。
因此得到的字典C应为:
{ 'name': 'Jack',
'age': 24,
'friends': ['Bob', 'Alice', 'Karen', 'Daren'],
}
答案 0 :(得分:3)
a = { 'name': 'Jack',
'age': 24,
'friends': ['Bob', 'Alice', 'Karen'],
}
b = { 'name': 'Jack',
'favorite_color': 'blue',
'friends': ['Daren'],
}
for key in a.keys():
if key in b:
if hasattr(a[key], 'extend'):
a[key].extend(b[key])
else:
a[key] = b[key]
print a
输出:
{'age': 24, 'friends': ['Bob', 'Alice', 'Karen', 'Daren'], 'name': 'Jack'}
这假定如果a
中的字段是列表,则b
中的相同字段也是列表。换句话说,如果b['friends']
不是列表,它可能会中断。如果这是一个问题,您需要检查两个字典中的字段类型并相应地定制行为。