2017-06-20 1 views
1

Existe-t-il un moyen de calculer la moyenne des valeurs de deux listes ou même de plusieurs dictionnaires?Valeurs moyennes des listes d'entiers et des dictionnaires

C'est ce que je suis venu avec:

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] 

Mais si j'ai 100 listes? Et si ces listes sont des dictionnaires à l'intérieur comme ceux-ci:

{'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]} 

post-scriptum la longueur de la liste est toujours la même.


EDIT: La note importante est que je veux la moyenne de chaque index, pas la moyenne de la liste.

+0

Peut-être que vous pouvez faire vos listes à tuple de vecteur de longueur de colonne, puis en utilisant # [statistics.mean] (https://docs.python.org/3/library/statistics.html) fonction – Pikaurd

Répondre

4

Utilisez zip et une compréhension de la liste:

>>> [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

Wow, une ligne de code pour mon problème: D. Merci. – Aminoff

1

Vous pouvez utiliser zip() pour obtenir un tuple de chaque élément regroupés sage index à partir des listes d'entrée, et utiliser sum() pour les ajouter ensemble:

>>> 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) 

Je pense que cela fonctionne très bien.

+0

Je pense que vous avez peut-être mal compris mon problème. – Aminoff

+0

Je n'étais pas sûr de l'implication de votre question. Pourriez-vous me donner à la fois le code utilisé et la sortie désirée? Cela m'aidera, ainsi que d'autres, à vous aider. –

+0

J'ai déjà trouvé une solution grâce à @Rawing et Christian Dean. Ce que je voulais, c'était obtenir les valeurs moyennes comparant les index de 2 listes. J'ai inclus un exemple de sortie de ce que je cherchais. – Aminoff