2017-04-11 75 views
4

我试图合并两个字典,寻找在堆栈溢出了密切的问题后,我找到了一个解决方案:
的Python 3.6合并字典失败

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个.txt2 wee
b有含1个.txt文件file 1 wee

所以我期望bigdict输出为3,但我观察到的是bigdict只是得到第一个字典的数字。 {**dict1 (THIS ONE), **dict2}并且合并不起作用。

问题:出了什么问题?为什么这个在python 3.6上失败,当答案表明它应该工作。

回答

4

dict(**x, **y)doing what its supposed to do。通过用第二个参数覆盖第一个参数值创建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

感谢答案+链接。帮了很多。 –