1 python dictionary ordereddictionary
我想添加两个这样的OrderedDict
对象:
dict1 = OrderedDict([('Table', [10, 20, 30, 'wood']), ('Chair', [200, 300, 400, 'wood'])])
dict2 = OrderedDict([('Table', ['red', 55]), ('Chair', ['blue', 200])])
Run Code Online (Sandbox Code Playgroud)
然后创建一个新的 OrderedDict
(顺序很重要):
dict3 = OrderedDict([('Table', [10, 20, 30, 'wood', 'red', 55]), ('Chair', [200, 300, 400, 'wood', 'blue', 200])])
Run Code Online (Sandbox Code Playgroud)
如果另一个中有任何键dict1
或dict2
其他中不存在,则应将其忽略,仅将匹配的键用于输出。所有值都是列表。
因为您想保留OrderedDict
对象的顺序,所以需要循环一个并针对另一个测试每个键以产生两个键集的并集:
dict3 = OrderedDict((k, dict1[k] + dict2[k]) for k in dict1 if k in dict2)
Run Code Online (Sandbox Code Playgroud)
循环dict1
确保我们以相同的顺序输出新字典的键,通过测试可以k in dict2
确保我们仅使用两个输入映射中都存在的键。
您还可以dict1
使用进行就地更新list.extend()
:
for key, value in dict1.items():
if key in dict2:
value.extend(dict2[key])
Run Code Online (Sandbox Code Playgroud)
演示:
>>> 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])])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2745 次 |
最近记录: |