如何将键和值(列表)附加到新词典?

时间:2019-10-09 17:59:21

标签: python python-3.x

该程序应该计算与all_grades词典中每个键相关联的等级的两个描述性统计信息。创建一个新字典,该字典具有与all_grades相同的键,但是值是具有两个统计信息的元组。

这两个统计数据是:平均值和中位数

all_grades:具有以下键和值的成绩字典

键:字母字符串,学生的姓氏

值:非负整数(学生成绩)列表

返回:成绩统计字典(我使用的是空字典“ average_grades”)

键:字母字符串,学生的名字(与all_grades中的键相同) 值:十进制-输入参数中的平均成绩

目标:all_grades({'ann':[70,90,100],'bob':[75,95]})将返回 {'ann':( 86.6,90.0),'bob':( 85.0,85.0)}

我能够解析all_grades并获取列表的中位数和均值,但是在将键和元组附加到新列表时遇到了麻烦。

到目前为止我所拥有的:

average_grades = {}

    for key, val in all_grades.items():
            x = statistics.mean(val)
            y = statistics.median(val)
            average_grades.append(key, x, y)
            print(average_grades)

2 个答案:

答案 0 :(得分:1)

我认为你想要

average_grades = {}

for key, val in all_grades.items():
    x = statistics.mean(val)
    y = statistics.median(val)
    average_grades[key]=[x,y]
print(average_grades)

答案 1 :(得分:0)

您可以使用dict理解。

注意:您只需要使用S而不是average_grades.update({key: [x, y]}),因为您还没有append中存在的密钥。

解决方案

作为一个通用示例,如果您有一些键和值,则可以在一行中使用dict理解来创建字典。

dict

您的案例中的一行dict理解如下:

dict((key, val) for key, val in zip(keys, vals))

详细解决方案

dict((key, [statistics.mean(val), statistics.median(val)]) for key, val in all_grades.items())

输出

keys = list('abcdef')
vals = np.arange(6).tolist()
print('keys: {}'.format(keys))
print('vals: {}'.format(vals))
d = dict((key, val) for key, val in zip(keys, vals))
print('Dict: \n{}'.format(d))

更正您的代码

您所需要的只是使用keys: ['a', 'b', 'c', 'd', 'e', 'f'] vals: [0, 1, 2, 3, 4, 5] Dict: {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5} 而不是average_grades.update({key: [x, y]}),因为您尚未在append中找到密钥。

dict
相关问题