2017-04-11 19 views
4

失敗し、私は次の解決策が見つかりました:
のPython 3.6のマージ辞書は、私は、スタックオーバーフローに近い質問を検索した後、2つの辞書をマージしようとしています

mergeDicts = {**dict1, **dict2} 

をしかし、それは動作しません。私は、単一の辞書のための右の結果を観察するように私のコードは大丈夫です知っているが、かつて私は、私はaで右の結果

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']) 

を得ることはありませんマージb2 wee
を含む1つの.txtファイルがあります含む1つの.txtファイルがあります1 wee

私はbigdictの出力が3になると思っていますが、私が観察したことは、bigdictは最初のdictの数字を取得することだけです。 {**dict1 (THIS ONE), **dict2}とマージが機能していません。

質問:何が問題になりましたか?答えがうまくいくと答えたときにPython 3.6でこれがなぜ失敗するのですか?

答えて

4

dict(**x, **y)は、doing what its supposed to doです。第1引数の値を第2引数で上書きして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

感謝を使用することができます。たくさん助けてくれました。 –

関連する問題