You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为嵌套字典内的列表元素程序化设置值?

程序化更新嵌套字典内的列表元素值

初始数据

初始字典:

{'Abraham': {'subjects': ['Chem', 'Bio', 'Phy', 'Math']}}

给定的评估类型与分数列表:

assess_type = ['Quiz', 'HW', 'ATTND', 'Exam']

chem = ['127', '135', '17', '46']
bio = ['154', '64', '14', '54']
phy = ['115', '115', '15', '55']
math = ['140', '160', '20', '40']

期望结果(修正语法错误后)

{'Abraham': {'subjects': {
    'Chem': {'Quiz': '127', 'HW': '135', 'ATTND': '17', 'Exam': '46'},
    'Bio': {'Quiz': '154', 'HW': '64', 'ATTND': '14', 'Exam': '54'},
    'Phy': {'Quiz': '115', 'HW': '115', 'ATTND': '15', 'Exam': '55'},
    'Math': {'Quiz': '140', 'HW': '160', 'ATTND': '20', 'Exam': '40'}
}}}

实现方法

核心思路是先建立科目与对应分数的映射,再通过遍历替换原列表中的科目名称为带分数的字典,具体代码如下:

# 初始字典
student_dict = {'Abraham': {'subjects': ['Chem', 'Bio', 'Phy', 'Math']}}

# 评估类型与分数
assess_type = ['Quiz', 'HW', 'ATTND', 'Exam']
chem = ['127', '135', '17', '46']
bio = ['154', '64', '14', '54']
phy = ['115', '115', '15', '55']
math = ['140', '160', '20', '40']

# 建立科目到分数列表的映射
subject_score_map = {
    'Chem': chem,
    'Bio': bio,
    'Phy': phy,
    'Math': math
}

# 获取原科目列表并生成新的科目字典
original_subjects = student_dict['Abraham']['subjects']
updated_subjects = {}
for subj in original_subjects:
    # 用zip将评估类型和分数配对成字典
    score_detail = dict(zip(assess_type, subject_score_map[subj]))
    updated_subjects[subj] = score_detail

# 更新回原字典
student_dict['Abraham']['subjects'] = updated_subjects

# 查看结果
print(student_dict)

如果需要subjects保持为列表格式(每个元素是含单个键值对的字典),只需修改生成updated_subjects的部分:

updated_subjects = []
for subj in original_subjects:
    score_detail = dict(zip(assess_type, subject_score_map[subj]))
    updated_subjects.append({subj: score_detail})

这样输出的结构就会是列表形式的嵌套字典。


内容的提问来源于stack exchange,提问作者Owoeye Babatunde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:50:29