用子键分配字典值

时间:2019-09-01 05:24:23

标签: python-3.x dictionary

我有一本当前的字典grade_lists,其中以学生姓名为键,并以成绩列表作为值对

{'Dave':[100,95,95]}

我需要在新词典中为成绩值分配作业名称;在这种情况下,['Exam 1', 'Exam 2', 'Exam 3']

这样

new_dict['Dave']['Exam 2'] == 95

2 个答案:

答案 0 :(得分:0)

您可以使用zip来匹配作业名称和成绩值,从而进行嵌套的dict理解。

grade_lists = {'Dave': [100, 95, 95]}
names = ['Exam 1', 'Exam 2', 'Exam 3']
new_dict = {k: {n: g for n, g in zip(names, v)} for k, v in grade_lists.items()}
print(new_dict)

输出:

{'Dave': {'Exam 1': 100, 'Exam 2': 95, 'Exam 3': 95}}

答案 1 :(得分:0)

@wjandrea答案的缩写:

new_d = {k: {x: v for x, v in zip(lst, *d.values())} for k in d}

其中d是您现有的词典,lst是考试名称列表。

示例

d = {'Dave':[100,95,95]}

lst = ['Exam 1', 'Exam 2', 'Exam 3']

new_d = {k: {x: v for x, v in zip(lst, *d.values())} for k in d}
# {'Dave': {'Exam 1': 100, 'Exam 2': 95, 'Exam 3': 95}}