如何在python中执行分组

时间:2017-12-12 12:22:49

标签: python

我试图找到python中某些数字的平均值

例如:

A={('A','B',1):1,('A','B',2):4,('A1','B1',2):5,('A1','B1',1):6}

A是字典,我的输出应该是

B={('A','B'):1+4/2,('A1','B1'):11/2)}

我通过使用一些FOR循环和IF条件得到了逻辑,但这太费时了。

任何人都可以告诉我更快的输出方式。 我的逻辑

    for i in A:
            # lis.append(i)
             lis.append((i, A[i]))
             for j in lis:
                if (j[0][0], j[0][1]) not in pro_loc_comb:
                    pro_loc_comb.append((j[0][0], j[0][1]))


B= {}
print pro_loc_comb
for x in pro_loc_comb:
    a = 0
    count = 0
    for j in lis:
        if (x[0] == j[0][0]):
            if (x[1] == j[0][1]):
                count = count + 1
                a = (a + j[1])
    B[(x[0], x[1])] = a / float(count)
print B

提前致谢

1 个答案:

答案 0 :(得分:0)

由于您没有包含您的解决方案,我使用了这个:

from __future__ import division
A={('A','B',1):1,('A','B',2):4,('A1','B1',2):5,('A1','B1',1):6}
B={}
C={}
for x in A:
    val= A[x]
    y,z,n=x
    if (y,z) in B:
        B[(y,z)]+=val
        C[(y,z)]+=1
    else:
        B[(y,z)]=val
        C[(y,z)]=1
for x in B:
    B[x]=B[x]/C[x]