2016-07-04 14 views
-3

Ich habe 3 Wörterbücher:Funktion Mittelwerte in Liste der Wörterbücher

zosia = {'imie': 'Zosia', 'zadania': 1, 'quizy': 2, 'testy': 5 }, 

jas = {'imie': 'Jas', 'zadania': 5, 'quizy': 5, 'testy': 5 }, 

malgosia = {'imie': 'Malgosia', 'zadania': 3, 'quizy': 3, 'testy': 4 } 

Und Liste, die sie enthält:

studenci = [zosia, jas, malgosia] 

Ich brauche eine Funktion, die im Durchschnitt Werte ('zadania' zu schaffen‘ quizy ',' testy ') in allen in studenci list enthaltenen Wörterbüchern. Also im Grunde brauche ich durchschnittlich studenci. Vielen Dank im Voraus.

+0

Ich konnte nur Zugriff auf nur einen Wert in diesen Wörterbüchern und ich wusste nicht, wie alle diese Werte zugreifen. Ich wusste nicht, wie ich sie anketten sollte. – Hevron

Antwort

2

Verketten Sie einfach die Werte und verwenden Sie sum() und len(), um sie zu mitteln. Beachten Sie, dass Sie nach den Diktaten in Ihrer Frage kein Komma haben können. das wickelt sie in Tupel.

from __future__ import division # only use this if you are in python 2.7 
from itertools import chain 

zosia = {'imie': 'Zosia', 'zadania': 1, 'quizy': 2, 'testy': 5 } 
jas = {'imie': 'Jas', 'zadania': 5, 'quizy': 5, 'testy': 5 } 
malgosia = {'imie': 'Malgosia', 'zadania': 3, 'quizy': 3, 'testy': 4 } 
studenci = [zosia, jas, malgosia] 

def get_average(dicts, values_labels): # you need to specify which members of zosia, jas, malgosia, etc. you want to count 
    values = list(chain.from_iterable((D[label] for label in values_labels) for D in dicts)) 
    average = sum(values)/len(values) 
    return average 

print(get_average(studenci, ('zadania', 'quizy', 'testy'))) 

# >>> 3 
0
'Returns a list of the "averages" of each dictionary' 
def dict_average(*args): 
    averages = [] 
    for arg in args: 
     values = arg.values() 
     s = 0 
     i = 0 
     for v in values: 
      try: 
       s += v 
       i += 1 
      except TypeError: 
       s += 0 
     averages.append(s/i) 
    return averages 
Verwandte Themen