我的代码例如如下在字典更换字典的值作为总值的比率
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专家,但你可以得到值的数组,然后求和它们,然后用计算的总和除以每个条目(值)。 –