在python中将list转换为dict并求重复值的平均值

2024-03-28 17:56:06 发布

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

我有一个清单:

list = [(a,1),(b,2),(a,3)]

我想把它转换成一个dict,当有一个副本(例如(a,1)(a,3))时,它将得到平均值,所以dict只有1键:值对在这种情况下是a:2。你知道吗


Tags: 副本情况dictlist平均值
1条回答
网友
1楼 · 发布于 2024-03-28 17:56:06
from collections import defaultdict
l = [('a',1),('b',2),('a',3)]
d = defaultdict(list)
for pair in l:
    d[pair[0]].append(pair[1]) #add each number in to the list with under the correct key
for (k,v) in d.items():
    d[k] = sum(d[k])/len(d[k]) #re-assign the value associated with key k as the sum of the elements in the list divided by its length

所以呢

print(d)
>>> defaultdict(<type 'list'>, {'a': 2, 'b': 2})

或者更好,最后制作一本简单的字典:

from collections import defaultdict
l = [('a',1),('b',2),('a',3)]
temp_d = defaultdict(list)
for pair in l:
    temp_d[pair[0]].append(pair[1])
#CHANGES HERE
final = dict((k,sum(v)/len(v)) for k,v in temp_d.items())
print(final)
>>> 
{'a': 2, 'b': 2}

请注意,如果您使用的是2.x(现在,您需要调整以下内容以强制浮点除法):

(k,sum(v)/float(len(v)))

或者

sum(d[k])/float(len(d[k]))

相关问题 更多 >