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: 'builtin_function_or_method' object is not iterable。任何建议如何做到这一点?
解决方案
您提供的代码存在几个问题:
您发布的代码不会引发任何错误(我认为在您的实际代码中,您可能
for x in coocurences.values
没有任何括号,这会引发错误)。x
只是字典中值的副本。更改x
不会更改字典中的值。请参阅不能在循环 Python 中修改列表元素 。- 如果您在循环期间更改值,您计算的总和也会发生变化。计算总和的效率也较低,因此您不妨在循环之前计算它。
把它们放在一起:
total = sum(coocurences.values())
for k,v in coocurences.items():
coocurences[k] = v/total
更好的是,使用 dict 理解:
total = sum(coocurences.values())
answer = {k: v/total for k,v in coocurences.items()}
推荐阅读
- javascript - 无法在页面加载事件(纯 JS)上将焦点设置为输入文本字段
- c# - 无法让 ASP.NET Web api 使用未指定的内容类型
- python - 是否可以将 Tkinter tickinterval 设置为幅度?
- java - 使用 Visual Code Java 从主类调用子类属性
- flutter - 安装flutter应用程序时不显示应用程序图标,但将发布apk直接安装到手机时显示图标
- mysql - 连接太多 Nodejs + mysql2/promise
- r - 在 R 中使用 For 循环将相同的函数应用于数据框中的多个变量
- r - 使用操作按钮在 R Shiny 中设置小部件的值
- javascript - vscode 中以 .ts (typescript) 格式显示的内置模块
- amazon-web-services - AWS 负载均衡器将 www.example.com 重定向到 example.com 不起作用