Die folgende Funktion sollte ein neues Wörterbuch zurückgeben, das die Werte summiert hat.Python-Wörterbuch sumUp-Werte
import functools
def sumUp(d):
for k in d:
d.update({k: functools.reduce(lambda x, y: x + y, d[k])})
print(d)
Wenn ich rufe Sie die Funktion wie folgt i den folgenden TypeError
bekommen, was ich kann nicht verstehen, warum:
sumUp({"Ungefucht": (165, 165, 165, 255, 286.25, 255, 165, 240, 240, 150), "Malsch": (120, 240, 120, 120, 120, 120, 120), "AAA": (1, 2), "Fens": (115.20, 69.60, 28.80, 50.40), "Betti": (82.50,)})
Traceback (most recent call last):
File "", line 1, in
File "/home/amir/programming/python/lern.py", line 6, in sumUp print(d)
TypeError: reduce() arg 2 must support iteration
Wenn ich einen der Schlüsselwerte auslassen es funktioniert gut:
sumUp({"Ungefucht": (165, 165, 165, 255, 286.25, 255, 165, 240, 240, 150), "Malsch": (120, 240, 120, 120, 120, 120, 120), "AAA": (1, 2), "Fens": (115.20, 69.60, 28.80, 50.40)})
{'Malsch': 960, 'Ungefucht': 2086.25, 'Fens': 264.0, 'AAA': 3}
Warum ist die erstes Beispiel mit einem weiteren Element, das nicht wie erwartet funktioniert?
Das ist sehr seltsam. Wenn Sie ein Element nach Betti hinzufügen funktioniert es – EoinS
Es scheint, es hat Probleme, wenn es 5 Schlüssel-Wert-Paare gibt! – amirteymuri
@Bharel scheint einen Weg gefunden zu haben, das zu tun, was Sie tun wollen, aber ich bin daran interessiert, genau herauszufinden, warum das passiert. Überprüfung der Schlüssel-Hashes jetzt – EoinS