2016-03-14 55 views
0

我已經字典的以下列表:平均的列表的第i個位置的元素的在字典蟒

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,...} 
+3

[查找列表的平均(的可能的複製http://stackoverflow.com/questions/9039961相對較新的/找到一個平均值的列表) – Trey50Daniel

+0

@ Trey50Daniel我認爲這兩個問題聽起來都一樣。 –

+0

是的,我認爲是。這就是把我拋棄的原因。 – Trey50Daniel

回答

2

使用 「總和」 的方法。 給定字典「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個元素的平均

+0

請問您可以添加更多描述? –

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.