我有一个python字典dict1
有超过20000个键,我想用另一个字典dict2
来update
。字典看起来是这样的:
dict1
key11=>[value11]
key12=>[value12]
...
...
keyxyz=>[value1x] //common key
...... so on
dict2
key21=>[value21]
key22=>[value22]
...
...
keyxyz=>[value2x] // common key
........ so on
如果我用
dict1.update(dict2)
然后,与dict2
键类似的dict1
键的值将被dict2
的值覆盖。我想要的是,如果dict1中已经存在一个键,那么dict2中该键的值应该附加到dict1的值。所以
dict1.conditionalUpdate(dict2)
会导致
dict1
key11=>[value11]
key12=>[value12]
key21=>[value21]
key22=>[value22]
...
...
keyxyz=>[value1x,value2x]
一个简单的方法是对dict1
的每个键在dict2
的键上迭代,并插入或更新键。有更好的方法吗?python是否支持支持这种功能的内置数据结构?
另一个没有导入任何内容的方法,只是使用常规的Python字典:
dict1.get(k,"")
返回与k
相关联的值(如果存在)或空字符串,然后追加dict2
的内容。实际上,使用dict理解和
itertools.groupby()
很简单:给我们:
当然,这会创建一个新的dict,但是如果您需要来更新第一个dict,您可以使用新的dict进行简单的更新。如果您的值已经是列表,这可能需要一些小的修改(但我认为您这样做是为了操作,在这种情况下,没有必要)。
当然,如果您使用的是Python 2.x,那么您需要在
dict.items()
上使用dict.viewitems()
或dict.iteritems()
。如果在dict理解之前使用的是Python版本,那么可以使用dict((key , value) for ...)
。使用集合模块中的^{} 。
相关问题 更多 >
编程相关推荐