繁体   English   中英

将字典值替换为字典中总值的比率

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM