lov*_*esh 8 python algorithm dictionary
我有一个dict1
包含超过20,000个键的python字典,我希望update
用另一个字典dict2
.字典看起来像这样:
dict1
key11=>[value11]
key12=>[value12]
...
...
keyxyz=>[value1x] //common key
...... so on
dict2
key21=>[value21]
key22=>[value22]
...
...
keyxyz=>[value2x] // common key
........ so on
Run Code Online (Sandbox Code Playgroud)
如果我使用
dict1.update(dict2)
Run Code Online (Sandbox Code Playgroud)
然后其键dict1
与键的类似dict2
将使其值被值覆盖dict2
.我想要的是如果一个键已经存在于dict1中,那么dict2中该键的值应该附加到dict1的值.所以
dict1.conditionalUpdate(dict2)
Run Code Online (Sandbox Code Playgroud)
应该导致
dict1
key11=>[value11]
key12=>[value12]
key21=>[value21]
key22=>[value22]
...
...
keyxyz=>[value1x,value2x]
Run Code Online (Sandbox Code Playgroud)
一种天真的方法是迭代dict2
每个键的键dict1
并插入或更新键.有更好的方法吗?python是否支持支持这种功能的内置数据结构?
使用defaultdict
集合模块.
>>> from collections import defaultdict
>>> dict1 = {1:'a',2:'b',3:'c'}
>>> dict2 = {1:'hello', 4:'four', 5:'five'}
>>> my_dict = defaultdict(list)
>>> for k in dict1:
... my_dict[k].append(dict1[k])
...
>>> for k in dict2:
... my_dict[k].append(dict2[k])
...
>>> my_dict[1]
['a', 'hello']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12376 次 |
最近记录: |