2017-04-11 5 views
4

Ich versuche, zwei Wörterbücher zu fusionieren, nachdem auf Stack-Überlauf für eine enge Frage suchte, fand ich die nächste Lösung:
Python 3.6 Merge-Wörterbücher nicht

mergeDicts = {**dict1, **dict2} 

aber das funktioniert nicht. Während ich meinen Code kennen in Ordnung ist, wie ich richtigen Ergebnisse für einzelne Wörterbuch beobachten, einmal fusionieren ich, dass ich nicht richtig Ergebnisse

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

In a bekommen gibt es 1 .txt Datei mit 2 wee
In b gibt es 1 .txt Datei enthält, 1 wee
Also würde ich erwarten, bigdict Ausgabe 3 zu sein, aber was ich beobachte, ist bigdict ist nur die Zahlen des ersten dict bekommen. {**dict1 (THIS ONE), **dict2} und die Zusammenführung funktioniert nicht.

Frage: Was ist schief gelaufen? Warum scheitert dies an Python 3.6, wenn Antworten darauf hinwiesen, dass es funktionieren sollte.

Antwort

4

dict(**x, **y) ist doing what its supposed to do. Erzeugt bigdict durch Überschreiben von Werten des 1. Arguments mit dem 2. Argument. Sie müssen die Werte selbst summieren.

können Sie einen 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

Vielen Dank für Antwort + Link. Hat viel geholfen. –