Python 如何合并具有相同键名的两个词典
我是Python新手,正在尝试编写一个函数来合并Python中的两个字典对象。 比如说Python 如何合并具有相同键名的两个词典,python,dictionary,Python,Dictionary,我是Python新手,正在尝试编写一个函数来合并Python中的两个字典对象。 比如说 dict1 = {'a':[1], 'b':[2]} dict2 = {'b':[3], 'c':[4]} 我需要制作一本新的合并词典 dict3 = {'a':[1], 'b':[2,3], 'c':[4]} 函数还应采用参数“conflict”(设置为True或False)。当conflict设置为False时,上面的设置就可以了。当conflict设置为True时,代码将合并字典,如下所示: dic
dict1 = {'a':[1], 'b':[2]}
dict2 = {'b':[3], 'c':[4]}
我需要制作一本新的合并词典
dict3 = {'a':[1], 'b':[2,3], 'c':[4]}
函数还应采用参数“conflict”(设置为True或False)。当conflict设置为False时,上面的设置就可以了。当conflict设置为True时,代码将合并字典,如下所示:
dict3 = {'a':[1], 'b_1':[2], 'b_2':[3], 'c':[4]}
我正在尝试附加这两本词典,但不确定如何正确添加
for key in dict1.keys():
if dict2.has_key(key):
dict2[key].append(dict1[key])
我想你想要这个:
dict1 = {'a':[1], 'b':[2]}
dict2 = {'b':[3], 'c':[4]}
def mergeArray(conflict):
for key in dict1.keys():
if dict2.has_key(key):
if conflict==False:
dict2[key].extend(dict1[key])
else:
dict2[key+'_1'] = dict1[key]
dict2[key+'_2'] = dict2.pop(key)
else:
dict2[key] = dict1[key]
mergeArray(True);
print dict2
如果您想要一个不会改变原始dict的合并副本,并监视名称冲突,您可能需要尝试以下解决方案:
#! /usr/bin/env python3
import copy
import itertools
def main():
dict_a = dict(a=[1], b=[2])
dict_b = dict(b=[3], c=[4])
complete_merge = merge_dicts(dict_a, dict_b, True)
print(complete_merge)
resolved_merge = merge_dicts(dict_a, dict_b, False)
print(resolved_merge)
def merge_dicts(a, b, complete):
new_dict = copy.deepcopy(a)
if complete:
for key, value in b.items():
new_dict.setdefault(key, []).extend(value)
else:
for key, value in b.items():
if key in new_dict:
# rename first key
counter = itertools.count(1)
while True:
new_key = f'{key}_{next(counter)}'
if new_key not in new_dict:
new_dict[new_key] = new_dict.pop(key)
break
# create second key
while True:
new_key = f'{key}_{next(counter)}'
if new_key not in new_dict:
new_dict[new_key] = value
break
else:
new_dict[key] = value
return new_dict
if __name__ == '__main__':
main()
程序将显示两个合并词典的以下表示形式:
{'a': [1], 'b': [2, 3], 'c': [4]}
{'a': [1], 'b_1': [2], 'b_2': [3], 'c': [4]}
太好了,谢谢你,我的方法是正确的,但是我仍然无法添加2本字典。用我现有的代码,我只是在dict2的键上加上了。@John KugelmanHuh不是完全相同的。谢谢@Kenny TM。我还有几个问题要问。我知道extend和append之间有什么区别,但我想加入这两个字典。而且,如果Conflict设置为False,则需要以不同的方式连接键。请指导如何做。我讨厌人们在这里问作业问题,这显然是纳西亚正在做的。太好了,非常感谢。这正是我想要的,但没有得到回答(在Python-append vs.extend中),这应该是为简单性和功能性所接受的答案。它也适用于OP(@nasiajaffri)