假设我们有两个词典:
c1 = {'Disks': [1, 3, 6, 2], 'left': True, 'right': False}
c2 = {'Disks': [0, 5, 7, 9, 8], 'left': False, 'right': True}
如何将它们添加到一起,以便新词典如下:
{'Disks': [1, 3, 6, 2, 0, 5, 7, 9, 8], 'left': True, 'right': True}
基本上'Disks'
中的任何内容都会合并在一起。
如果其中一个左键为真,则新词典中的左键为真,如果两者均为假,则新词典中的左键保持为假。我也希望在正确的密钥上发生同样的事情。
答案 0 :(得分:3)
使用字典理解,对每个字典的值应用三元运算符。当值为列表时,添加它们,否则使用or
运算符:
c = {k: v + c2[k] if isinstance(v, list) else v or c2[k]
for k, v in c1.items()}
print(c)
# {'Disks': [1, 3, 6, 2, 0, 5, 7, 9, 8], 'right': True, 'left': True}
参考文献:
答案 1 :(得分:0)
这是另一种方式
>>> c1 = {'Disks':[1,3,6,2], 'left' :True, 'right': False}
>>> c2 = {'Disks' :[0,5,7,9,8], 'left':False, 'right':True }
# merge values from two dictionaries.
>>> x = zip(c1.values(), c2.values())
# Handle list types merging
>>> x = [y[0] + y[1] if type(y[0]) is list else y for y in x]
# Handle boolean types merging
>>> x = [y[0] or y[1] if type(y[0]) is bool else y for y in x]
# create the final dictionary
>>> dict(zip(c1.keys(), x))
{'Disks': [1, 3, 6, 2, 0, 5, 7, 9, 8], 'right': True, 'left': True}