字典列表中的函数平均值

2024-09-27 22:37:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三本字典:

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')。所以基本上我需要平均的学习时间。先谢谢你


Tags: 函数列表字典时间testyjasimiestudenci
2条回答
'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

只需将这些值链接起来,并使用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

相关问题 更多 >

    热门问题