Python 字典列表中的函数平均值

Python 字典列表中的函数平均值,python,list,dictionary,Python,List,Dictionary,我有3本字典: 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, malgo

我有3本字典:

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]

我需要创建一个函数来平均studenci列表中包含的所有字典中的值('zadania','quizy','testy')。所以基本上我需要平均的学习成绩。提前谢谢。

只需将这些值链接起来,然后使用
sum()
len()
对它们进行平均。请注意,你的问题中的格言后面不能有逗号;将它们包装成元组

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

我只能访问那些字典中的一个值,我不知道如何访问所有这些值。我不知道怎么把他们拴起来。
'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