在字典中取平键和平均值

时间:2014-06-15 11:35:19

标签: python list dictionary

我有一个字典,看起来像这样:

{0.234 : 100, 0.345 : 120, 2.45: 200, 2.55 : 250}

对于我的问题,我必须使用密钥的floor()并取相应值的平均值。

{0 : 110, 2 : 225}

我应该怎么做?我想可能会附加与列表的键值相同的值,然后取所有列表的平均值:

{ 0 : [100, 120], 2 : [200, 250]}

但我无法想象如何做到这一点。

2 个答案:

答案 0 :(得分:0)

defaultdict用于根据公共密钥收集值,公共密钥是原始字典中密钥的最低值。

import math
from collections import defaultdict

original_dict = {0.234 : 100, 0.345 : 120, 2.45: 200, 2.55 : 250}
d = defaultdict(list)

for k,v in original_dict.iteritems(): # or .items() if you are on Python 3.x
     d[math.floor(k)].append(v)

for k,v in d.iteritems():
    d[k] = sum(v)/len(v)

print(d)

答案 1 :(得分:0)

import math
a = {0.234 : 100, 0.345 : 120, 2.45: 200, 2.55 : 250}
d = {}
for x in a:
    if (math.floor(x)) not in d:
        d[math.floor(x)] = [a[x]]
    else:
        d[math.floor(x)] += [a[x]]

d的输出:

{ 0 : [100, 120], 2 : [200, 250]}

然后:

for x in d:
    d[x] = sum(d[x]) // len(d[x])

d的输出:

{0 : 110, 2 : 225}