我合并了一组词典,其中两个可能包含相同的键但值不同。目前,我的简单代码如下所示:
dictOne = {'income': 10000, 'name': 'John'}
dictTwo = {'income': 6000, 'job': 'plumber'}
resultsDict = {}
myList = [dictOne, dictTwo]
for i in myList:
resultsDict.update(i)
resultsDict
中收入键的值将始终为最近添加的字典中存在相同键的值(在这种情况下为6000)。
控制给定重复键更新的最简单/最优雅的方法是什么?例如,如果密钥已经存在,则不要添加新密钥/值,或者如果要更新的值大于dict中已有的值,则不更新密钥的值我正在更新?
答案 0 :(得分:1)
我认为你必须单独循环遍历所有词典,检查密钥是否存在,何时不存在或何时但低于新值,正确更新
for currDict in myList:
for key, val in currDict.items():
try:
val = float(val)
except ValueError:
continue
try:
if resultsDict[key] < val:
resultsDict[key] = val
except KeyError:
resultsDict[key] = val
注意:为了便于阅读,我更改了i
的命名法
更新:此代码不包括val
何时不包含数字(或任何可以float
- ed)的情况。你没有说明你希望这种情况如何表现,所以这只是忽略了
答案 1 :(得分:0)
您可以将两个键和值都添加到一个字典中。 dictTwo = {'incomeOne':10000,'incomeTwo':6000等等}然后将它们拉出来。