我的代碼例如如下在字典更換字典的值作爲總值的比率
dict1 = {'c': 2, 'p': 1.0}
要改變的字典的值來表示其自身的比率出合計值的
dict1 = {'c': 0.6666666666666666, 'p': 0.3333333333333333}
我的代碼例如如下在字典更換字典的值作爲總值的比率
dict1 = {'c': 2, 'p': 1.0}
要改變的字典的值來表示其自身的比率出合計值的
dict1 = {'c': 0.6666666666666666, 'p': 0.3333333333333333}
>>> 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}
>>>
注意:避免使用dict
作爲變量名,它是一個python's builtin。一襯墊的
說明:
d1 = {}
- > d1爲一個字典
d1 = { k: ... for k in d}
- >的d1
所有鍵的d
sum(d[k] for k in d)
的那些 - >計算所有d的值之和
因此,上面的...
部分包含d[k]/sum(d[k] for k in d)
:這會使與所有值d的總和匹配的密鑰k
的值的商數。
編輯:作爲alykhank建議在評論中,可以做到這兩行,並通過不重新計算每次迭代的總和來節省執行時間。
>>> total = sum(d.values())
>>> d2 = {k: d[k]/total for k in d}
>>> d2
{'c': 0.6666666666666666, 'p': 0.3333333333333333}
>>>
我建議保存總數,以避免在每次迭代中重新計算它:'total = sum(d.values())'then then'd1 = {k:d [k]/total for k in d}'。 – alykhank
不是Python專家,但你可以得到值的數組,然後求和它們,然後用計算的總和除以每個條目(值)。 –