如何获取值列表(百分比):
example = [(1,100), (1,50), (2,50), (1,100), (3,100), (2,50), (3,50)]
并返回字典:
example_dict = {1:250, 2:100, 3:150}
并通过除以sum(example_dict.values())/ 100重新计算:
final_dict = {1:50, 2:20, 3:30}
我尝试将值列表映射到字典的方法导致值被迭代而不是求和。
修改 因为有人在这里被要求进行了一些尝试(仅仅是在写过旧的值之后),这些尝试无处可去,并用python演示了我的“新手”:
{k: +=v if k==w[x][0] for x in range(0,len(w),1)}
无效
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)
再次无效。
另一个类似的无效,谷歌上没有,然后是SO。
答案 0 :(得分:2)
您可以尝试这样的事情:
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
查看在线工作:ideone
答案 1 :(得分:0)
使用Counter
类:
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()}