Ich versuche, drei Wörterbücher zusammenzuführen, die alle dieselben Schlüssel haben und entweder Listen von Werten oder einzelne Werte enthalten.
one={'a': [1, 2], 'c': [5, 6], 'b': [3, 4]}
two={'a': [2.4, 3.4], 'c': [5.6, 7.6], 'b': [3.5, 4.5]}
three={'a': 1.2, 'c': 3.4, 'b': 2.3}
Was ich brauche, ist, dass alle Elemente in den Werten zu einer Liste hinzugefügt werden.
result={'a': [1, 2, 2.4, 3.4, 1.2], 'c': [5, 6, 5.6, 7.6, 3.4], 'b': [3, 4, 3.5, 4.5, 2.3]}
Ich habe mehrere Dinge ausprobiert, aber die meisten fügen die Werte in verschachtelte Listen ein. Zum Beispiel:
out=dict((k, [one[k], two.get(k), three.get(k)]) for k in one)
{'a': [[1, 2], [2.4, 3.4], 1.2], 'c': [[5, 6], [5.6, 7.6], 3.4], 'b': [[3, 4], [3.5, 4.5], 2.3]}
Ich habe versucht, es zu aktualisieren, indem ich durch die Werte iteriert habe:
out.update((k, [x for x in v]) for k,v in out.iteritems())
aber das Ergebnis war genau das gleiche. Ich habe versucht, einfach die Listen hinzuzufügen, aber weil das dritte Wörterbuch nur einen Float-Wert hat, konnte ich es nicht tun.
check=dict((k, [one[k]+two[k]+three[k]]) for k in one)
Also versuchte ich zuerst die Listen in den Werten von one und two zu addieren und dann den Wert von three anzuhängen. Das Hinzufügen der Listen hat gut funktioniert, aber dann, als ich versuchte, den Float-Wert aus dem dritten Wörterbuch anzuhängen, ging plötzlich der gesamte Wert zu 'None'
check=dict((k, [one[k]+two[k]]) for k in one)
{'a': [[1, 2, 2.4, 3.4]], 'c': [[5, 6, 5.6, 7.6]], 'b': [[3, 4, 3.5, 4.5]]}
new=dict((k, v.append(three[k])) for k,v in check.items())
{'a': None, 'c': None, 'b': None}