Python 3.6 合并字典失败

4

我正在尝试合并两个字典,在stackoverflow上搜索了一个相关问题后,我找到了下面的解决方案:

mergeDicts = {**dict1, **dict2} 

但是那样不起作用。虽然我知道我的代码没问题,因为单个字典观察到了正确的结果,但是一旦合并后就得不到正确的结果。

def readFiles(path1):
    // count words


if __name__ == '__main__':
    a = readFiles('C:/University/learnPy/dir')
    b = readFiles('C:/Users/user/Anaconda3/dir')
    bigdict = {**a, **b}
    print(a['wee'])
    print(b['wee'])
    print(bigdict['wee'])

a 中有1个包含2个小文件的.txt文件。
b 中有1个包含1个小文件的.txt文件。

因此,我期望bigdict的输出结果为3,但我观察到bigdict只获取了第一个字典的数字。{**dict1 (THIS ONE), **dict2}而且合并不起作用。

问题:出了什么问题?为什么在Python 3.6上失败,而答案表明它应该可以工作。

1个回答

4

dict(**x, **y)按照预期工作的。它通过用第2个参数覆盖第1个参数的值创建bigdict。您需要自己对值求和。

您可以使用Counter

from collections import Counter
a = {'wee':1, 'woo':2 }
b = {'wee':10, 'woo': 20 }
bigdict = dict(Counter(a)+Counter(b))

Out[23]: {'wee': 11, 'woo': 22}

1
感谢您的回答和链接。帮了很大的忙。 - Tony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接