我想添加两个这样的OrderedDict
个对象:
dict1 = OrderedDict([('Table', [10, 20, 30, 'wood']), ('Chair', [200, 300, 400, 'wood'])])
dict2 = OrderedDict([('Table', ['red', 55]), ('Chair', ['blue', 200])])
并像这样创建一个新的OrderedDict
(顺序很重要):
dict3 = OrderedDict([('Table', [10, 20, 30, 'wood', 'red', 55]), ('Chair', [200, 300, 400, 'wood', 'blue', 200])])
如果dict1
或dict2
中的任何键不存在于另一个中,则应忽略这些键,只应将匹配的键用于输出。所有值都是列表。
答案 0 :(得分:4)
因为你想保留OrderedDict
个对象的顺序,你需要循环遍历一个并测试每个密钥,以产生两个密钥集的并集:
dict3 = OrderedDict((k, dict1[k] + dict2[k]) for k in dict1 if k in dict2)
循环dict1
确保我们以相同的顺序输出新字典的密钥,使用k in dict2
进行测试可确保我们只使用两个输入映射中的密钥
您还可以使用dict1
list.extend()
for key, value in dict1.items():
if key in dict2:
value.extend(dict2[key])
演示:
>>> from collections import OrderedDict
>>> dict1 = OrderedDict([('Table', [10, 20, 30, 'wood']), ('Chair', [200, 300, 400, 'wood'])])
>>> dict2 = OrderedDict([('Table', ['red', 55]), ('Chair', ['blue', 200])])
>>> OrderedDict((k, dict1[k] + dict2[k]) for k in dict1 if k in dict2)
OrderedDict([('Table', [10, 20, 30, 'wood', 'red', 55]), ('Chair', [200, 300, 400, 'wood', 'blue', 200])])
答案 1 :(得分:0)
dict3 = {}
for i in dict1:
if i in dict2:
dict3[i]=[]
for j in dict1[i]:
dict3[i].append(j)
for j in dict2[i]:
dict3[i].append(j)