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

Python代码返回空字典:诺贝尔获奖者关联机构数据处理问题排查

解决思路与代码实现

常见错误点排查

  • 未正确遍历嵌套层级:获奖者对象→prizes数组→单个prize→affiliations数组,任何一层遗漏都会导致无输出。
  • 未处理字段缺失情况:直接用索引访问(如laureate['prizes'])会引发KeyError,导致程序中断。
  • 忽略空机构名:部分affiliations条目可能无有效名称,需跳过避免无效键。

正确实现代码

def get_affiliation_prizes(dict_laureates):
    affiliation_map = {}
    # 遍历所有获奖者
    for laureate in dict_laureates.values():
        # 遍历当前获奖者的所有奖项
        for prize in laureate.get('prizes', []):
            # 遍历当前奖项下的关联机构
            for affil in prize.get('affiliations', []):
                org_name = affil.get('name')
                if not org_name:
                    continue
                # 组装当前奖项的类别与年份信息
                prize_detail = {
                    'category': prize.get('category'),
                    'year': prize.get('year')
                }
                # 更新机构对应的奖项列表
                if org_name not in affiliation_map:
                    affiliation_map[org_name] = []
                affiliation_map[org_name].append(prize_detail)
    return affiliation_map

代码说明

  1. 用dict.get(key, default)安全获取嵌套字段,避免因字段缺失报错。
  2. 逐层遍历数据结构,确保每个关联机构都被处理。
  3. 对空机构名做过滤,避免无效键存入结果。
  4. 同一机构多次获奖时,自动追加奖项信息到对应列表中,符合需求示例(如Aarhus University关联多条记录)。

示例输出

当输入包含Aarhus University的获奖记录时,结果会类似:

{
    "Aarhus University": [
        {"category": "physics", "year": "2020"},
        {"category": "chemistry", "year": "2015"}
    ],
    "其他机构名": [
        {"category": "medicine", "year": "2018"}
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:23:16