我的代码示例如下
dict1 = {'c': 2, 'p': 1.0}
想要更改dict的值以表示其自身与总值的比率
dict1 = {'c': 0.6666666666666666, 'p': 0.3333333333333333}
答案 0 :(得分:1)
>>> 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)
:这使得与键k
匹配的值的商除以d的所有值的总和。
编辑:正如alykhank在评论中建议的那样,可以在两行中执行此操作,并通过在每次迭代时不重新计算总和来节省执行时间。
>>> total = sum(d.values())
>>> d2 = {k: d[k]/total for k in d}
>>> d2
{'c': 0.6666666666666666, 'p': 0.3333333333333333}
>>>