字典python中列表的第i个位置元素的平均值

时间:2016-03-14 22:44:24

标签: list python-3.x dictionary

我有以下词典列表:

clusters=[{'A': [1.0, 1.0]}, {'C': [4.0, 4.0], 'D': [4.0, 5.0], 'B': [2.0, 1.0]}]

我已经编写了一段代码,可以从列表中一次访问一个字典:

for index, value in enumerate(clusters):
        for key in value:

这样我就可以得到以下词典;

{'A': [1.0, 1.0]}
{'C': [4.0, 4.0], 'D': [4.0, 5.0], 'B': [2.0, 1.0]}

我要做的是找到字典中列表值的ith元素的平均值。 例如:在第二个字典中;

x-position-average = (4.0+4.0+2.0)/3

然后将该值分配给字典:

new_centroid = {"X": x-position-average,"Y": y-position-average,...}

2 个答案:

答案 0 :(得分:2)

使用“sum”方法。 给出字典“D”:

def average(D, i):
    # key iterates over all keys in the dictionary. 
    # D[key][i] is the ith element of the list whose key is "key"
    return sum(D[key][i] for key in D)/len(D)

这将返回D中每个列表的第i个元素的平均值。

答案 1 :(得分:1)

如果您有维度n中的点字典,则以下函数将其质心作为元组返回:

def centroid(d,n):
    return tuple(statistics.mean(d[k][i] for k in d) for i in range(n))

例如,如果

cluster = {'C': [4.0, 4.0], 'D': [4.0, 5.0], 'B': [2.0, 1.0]}

然后

>>> centroid(cluster,2)
(3.3333333333333335, 3.3333333333333335)

这使用statistics模块,这在Python 3中相对较新。