将所有字典值转换为比例

2024-09-29 21:32:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我把字典定义为

coocurences = {('a', 'b'): 74, ('a', 'c'): 33, ('b', 'c'): 26}

我想把这本字典的值改成它的值之和的比例:

{('a', 'b'): 0,556390977443609‬, ('a', 'c'): 0,2481203007518797, ('b', 'c'): 0,1954887218045113‬‬}

我试过:

for x in coocurences.values():
    x = (x/sum(coocurences.values()))

但它告诉我:TypeError:“内置函数”或“方法”对象是不可编辑的。 有什么建议可以实现这一点吗


Tags: 对象方法函数in编辑for字典定义
2条回答

您提供的代码有几个问题:

  1. 您发布的代码不会抛出任何错误(我认为在您的实际代码中,您可能有for x in coocurences.values没有任何括号,这将抛出错误)

  2. x只是字典中值的副本。更改x不会更改dict中的值。请参阅Can't modify list elements in a loop Python

  3. 如果在循环期间更改值,则计算的总和也将更改。每隔一周计算一次和的效率也比较低,所以最好在循环之前计算

总而言之:

total = sum(coocurences.values())
for k,v in coocurences.items():
    coocurences[k] = v/total

更好的是,使用听写理解:

total = sum(coocurences.values())
answer = {k: v/total for k,v in coocurences.items()}

还有另一种方法可以做到这一点。而不是使用“.values()”您可以使用键来更改值,如果这样做有意义的话

    for x in coocurences:
        coocurences[x] = (coocurences[x]/sum([coocurences[i] for i in coocurences]))

相关问题 更多 >

    热门问题