使用相同的键控制字典更新

时间:2015-06-24 19:00:46

标签: python dictionary

我合并了一组词典,其中两个可能包含相同的键但值不同。目前,我的简单代码如下所示:

dictOne = {'income': 10000, 'name': 'John'}
dictTwo = {'income': 6000, 'job': 'plumber'}
resultsDict = {}
myList = [dictOne, dictTwo]
for i in myList:
    resultsDict.update(i)

resultsDict中收入键的值将始终为最近添加的字典中存在相同键的值(在这种情况下为6000)。

控制给定重复键更新的最简单/最优雅的方法是什么?例如,如果密钥已经存在,则不要添加新密钥/值,或者如果要更新的值大于dict中已有的值,则不更新密钥的值我正在更新?

2 个答案:

答案 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等等}然后将它们拉出来。