2017-04-11 74 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

感謝答案+鏈接。幫了很多。 –