2017-06-20 65 views
1

是否有計算兩個或多個列表甚至字典值的平均值的方法?整數列表和詞典的平均值

這是我想出了:

lista = [1, 2, 3, 4, 5] 
listb = [5, 4, 3, 2, 1] 

listavg = [0]*5 
count = 0 
for i in lista: 
    listavg[count] = (i + listb[count])/2 
    count += 1 

print(listavg) 

[3.0, 3.0, 3.0, 3.0, 3.0] 

但是,如果我有什麼100名名單?那麼如果這些列表是在像這樣的字典裏呢:

{'A': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'B': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'C': [2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 'D': [3, 3, 3, 3, 3, 3, 3, 3, 3, 3], 'E': [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], 'F': [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], 'G': [6, 6, 6, 6, 6, 6, 6, 6, 6, 6], 'H': [7, 7, 7, 7, 7, 7, 7, 7, 7, 7], 'I': [8, 8, 8, 8, 8, 8, 8, 8, 8, 8], 'J': [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]} 

P.S.列表的長度總是相同的。


編輯:重要說明是,我想每個索引的平均值,而不是列表的平均值。

+0

也許你可以使你的列表成爲列長度向量的元組,然後使用#[statistics.mean](https://docs.python.org/3/library/statistics.html)函數 – Pikaurd

回答

4

使用zip和列表理解:

>>> [sum(l)/len(l) for l in zip(*list_dict.values())] 
[4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5] 
+0

哇,一行代碼對於我的問題:D。 謝謝。 – Aminoff

1

您可以使用zip()獲得從輸入列表組合在一起指數明智的每一個元素的元組,並使用sum()將它們加在一起:

>>> def averages(*lists): 
    return [sum(els)/len(els) for els in zip(*lists)] 

>>> averages([1, 2, 3, 4, 5], [5, 4, 3, 2, 1]) 
[3.0, 3.0, 3.0, 3.0, 3.0] 
>>> 
0
lista = [1, 2, 3, 4] 
listb = [5, 6, 7, 8, 9] 
lists = lista + listb 
average = sum(lists)/len(lists) 

我認爲這工作正常。

+0

我想你可能誤解了我的問題。 – Aminoff

+0

我不確定你的問題的含義。你能不能給我所用的代碼和所需的輸出。這將幫助我以及其他人幫助您。 –

+0

感謝@Rawing和Christian Dean,我已經找到了解決方案。我想要的是獲得比較2個列表索引的平均值。我包含了我正在尋找的示例輸出。 – Aminoff