平均来自两个词典列表

时间:2015-11-21 07:48:03

标签: python dictionary

我有两个词典列表,我想根据键值找到每个词典的平均值。即我想匹配键并从词典列表中平均其值。

override func viewWillDisappear(animated: Bool) {
    player?.pause()

    super.viewWillDisappear(animated)
}

我想匹配词典列表中的键data = {'5649a533c95a8a0bc345d1fe': [{'1': 0.0}, {'2': 28652.343535112403}, {'3': 26505.012833437846}], '5649a533c95a8a0bc345d20c': [{'1': 28652.343535112403}, {'2': 26505.012833437846}, {'3': 24518.570421292356}]} ,然后对其各自的值进行平均。

E.g在上面的数据集中,我需要获得与键匹配的值'1'0.0,即' 1'然后做平均值。

预期结果为28652.343535112403

我能够迭代字典,但之后我就迷失了。

这是我试图做的事情

[{'1': 20000}, {'2': 230000}, {'3': 23000}]

请帮忙。

2 个答案:

答案 0 :(得分:1)

尝试:

d = {}

for x in itertools.chain(data.values()):
        for k,v in x.items():
            if k in d:
                d[k].append(v)
            else:
                d[k] = [v]

av = {}

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

print av

我得到了一个结果:

{'1': 14326.171767556201, '3': 25511.7916273651, '2': 27578.678184275122}

注意:根据您的数据值,您无法获得平均值:

[{'1': 20000}, {'2': 230000}, {'3': 23000}]      

答案 1 :(得分:0)

另一种尝试可能是 -

d = []
for k, v in data.items():
    dd = []
    for index, i in enumerate(v, start=1):
        dd.append((index, i[str(index)]))
    d.append(dd)
av_1 = []
av_2 = []

for (x,y) in zip(d[0],d[1]):
    l1 = (x[0],y[0])
    l2= (x[01],y[1])
    l1_av = reduce(lambda x, y: x + y, l1) / len(l1)
    l2_av = reduce(lambda x, y: x + y, l2) / len(l2)
    av_1.append(l1_av)
    av_2.append(l2_av)
print {k:v for k,v in zip(av_1,av_2)}

输出

{1: 14326.171767556201, 2: 27578.678184275122, 3: 25511.7916273651}