首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与字典具有相似键的值的求和列表

与字典具有相似键的值的求和列表
EN

Stack Overflow用户
提问于 2012-03-15 16:21:46
回答 2查看 422关注 0票数 0

如何获取值(百分比)列表:

代码语言:javascript
复制
example = [(1,100), (1,50), (2,50), (1,100), (3,100), (2,50), (3,50)]

并归还一本字典:

代码语言:javascript
复制
example_dict = {1:250, 2:100, 3:150}

并通过求和(example_dict.values())/100重新计算:

代码语言:javascript
复制
final_dict = {1:50, 2:20, 3:30}  

我尝试将值列表映射到字典的方法会导致值被迭代而不是被求和。

编辑:,因为这里有人问它,这里有一些尝试(在编写了旧值之后)没有去哪里,并演示了我对python的“新手”:

代码语言:javascript
复制
{k: +=v if k==w[x][0] for x in range(0,len(w),1)}

无效

代码语言:javascript
复制
for i in w[x][0] in range(0,len(w),1):
    for item in r:
        +=v  (don't where I was going on that one)

又无效了。

另一个类似的,是无效的,没有在谷歌上,然后就这样。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-15 16:26:29

你可以试试这样的方法:

代码语言:javascript
复制
total = float(sum(v for k,v in example))
example_dict = {}
for k,v in example:
     example_dict[k] = example_dict.get(k, 0) + v * 100 / total

看到它在网上工作:意为

票数 2
EN

Stack Overflow用户

发布于 2012-03-15 16:27:37

使用Counter类:

代码语言:javascript
复制
from collections import Counter
totals = Counter()
for k, v in example: totals.update({k:v})
total = sum(totals.values())
final_dict = {k: 100 * v // total for k, v in totals.items()}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9723860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档