我试图找到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
提前致谢
答案 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]