合并两个字典中的值(Python)

2024-09-28 03:25:18 发布

您现在位置:Python中文网/ 问答频道 /正文

(我是Python新手!) 试着找出这个家庭作业问题: 函数将接受两个字典的输入,每个字典将字符串映射为整数。函数将返回一个字典,该字典将两个输入字典中的字符串映射为两个输入字典中整数的和。你知道吗

我的想法是:

def ​add(​dicA,dicB):
    dicA = {}
    dicB = {}
    newdictionary = dicA.update(dicB)

然而,这又带来了None。你知道吗

以教授为例:

print(add({'alice':10, 'Bob':3, 'Carlie':1}, {'alice':5, 'Bob':100, 'Carlie':1}))

输出为:

{'alice':15, 'Bob':103, 'Carlie':2}

我的问题是我不知道如何将每个字典的值相加。我知道字典不支持“+”。我不想找任何人帮我做作业,但任何建议都将非常感谢!你知道吗


Tags: 函数字符串add字典defupdate整数bob
3条回答

以下不是最优雅的解决方案,而是要了解如何处理dicts。你知道吗

dictA = {'Alice':10, 'Bob':3, 'Carlie':1}
dictB = {'Alice':5, 'Bob':100, 'Carlie':1} 


# how to iterate through a dictionary
for k,v in dictA.iteritems():
        print k,v

# make a new dict to keep tally
newdict={}

for d in [dictA,dictB]:   # go through a list that has your dictionaries
    print d
    for k,v in d.iteritems():  # go through each dictionary item
        if not k in newdict.keys():
            newdict[k]=v
        else:
            newdict[k]+=v

print newdict

输出:

Bob 3
Alice 10
Carlie 1
{'Bob': 3, 'Alice': 10, 'Carlie': 1}
{'Bob': 100, 'Alice': 5, 'Carlie': 1}
{'Bob': 103, 'Alice': 15, 'Carlie': 2}

首先,a.update(b)就地更新a,并返回None。 其次,a.update(b)不会帮助您对键进行求和;它只会生成一个字典,其结果字典包含来自b的所有键、值对:

>>> a = {'alice':10, 'Bob':3, 'Carlie':1}
>>> b = {'alice':5, 'Bob':100, 'Carlie':1}
>>> a.update(b)
>>> a
{'alice': 5, 'Carlie': 1, 'Bob': 100}

使用^{}来获得期望的结果是最简单的。另外,它还支持添加+

from collections import Counter

def add(dicA, dicB):
    return dict(Counter(dicA) + Counter(dicB))

这将产生预期的结果:

>>> print(add({'alice':10, 'Bob':3, 'Carlie':1}, {'alice':5, 'Bob':100, 'Carlie':1}))
{'alice': 15, 'Carlie': 2, 'Bob': 103}

documentation

update([other])

Update the dictionary with the key/value pairs from other, overwriting existing keys. Return None.

如果不想替换键/值对,则需要为相似的键添加值。浏览每个字典并将每个值添加到相关键:

def ​add(​dicA,dicB):
    result = {}
    for d in dicA, dicB:
        for key in d:
            result[key] = result.get(key, 0) + d[key]
    return result

result.get(key, 0)将检索现有key的值,如果key还不存在,则生成0。你知道吗

相关问题 更多 >

    热门问题