>>> d = {'c': 2, 'p': 1.0}
>>> d1 = { k: d[k]/sum(d[k] for k in d) for k in d }
>>> d1
{'c': 0.6666666666666666, 'p': 0.3333333333333333}
>>>
Hinweis: Vermeiden Sie die Verwendung dict
als Variablenname, es ist ein python's builtin.
Erklärung der Einzeiler:
d1 = {}
-> d1 ist ein Wörterbuch
d1 = { k: ... for k in d}
-> alle Tasten von d1
sind die von d
sum(d[k] for k in d)
-> Berechnen Sie die Summe aller Werte von d
So enthält der ...
Teil oben d[k]/sum(d[k] for k in d)
: das macht den Quotienten aus dem Wert, der dem Schlüssel k
entspricht, mit der Summe aller Werte von d.
EDIT: wie Alykhank im Kommentar vorgeschlagen, ist es möglich, dies in zwei Zeilen zu tun und speichern Ausführungszeit durch Neuberechnung der Summe bei jeder Iteration.
>>> total = sum(d.values())
>>> d2 = {k: d[k]/total for k in d}
>>> d2
{'c': 0.6666666666666666, 'p': 0.3333333333333333}
>>>
kein Python-Experte, aber Sie können das Array von Werten erhalten, summieren, dann teilen Sie jeden Eintrag (Wert) durch die Summe, die Sie berechnet haben. –