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

时间:2016-04-30 03:31:04

标签: python python-3.x dictionary math

我的代码示例如下

 dict1 = {'c': 2, 'p': 1.0}       

想要更改dict的值以表示其自身与总值的比率

dict1 = {'c': 0.6666666666666666, 'p': 0.3333333333333333}

1 个答案:

答案 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}
>>>