[英]Replacing dictionary values as a ratio of total values in the dict
我的代码示例如下
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的内置函数 。
单线说明:
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}
>>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.