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

如何从包含嵌套列表的dictionary中提取字段生成目标dictionary

问题原因

  • 直接遍历my_dict实际上只会遍历字典的键名(也就是只能拿到mc字符串),没有拿到对应存储数据的嵌套列表
  • 每次直接用=赋值会覆盖上一轮写入的值,不会做汇总存储,最终只保留最后一个元素的取值
  • 存在语法错误:字符串索引的引号未闭合,还有提取turnInPlayEnabled时字段名多写了前缀i,拼写错误会导致取值报错

正确实现

基础写法

# 初始化新字典,每个目标键对应空列表用来汇总数据
new_dict = {
    'id': [],
    'bspMarket': [],
    'turnInPlayEnabled': [],
    'persistenceEnabled': [],
    'marketBaseRate': [],
    'eventId': [],
    'eventTypeId': [],
    'numberOfWinners': [],
    'bettingType': []
}

# 遍历mc对应的嵌套列表
for sub_list in my_dict['mc']:
    item = sub_list[0]
    # 提取id字段
    new_dict['id'].append(item['id'])
    market_def = item['marketDefinition']
    # 提取marketDefinition下的字段
    new_dict['bspMarket'].append(market_def['bspMarket'])
    new_dict['turnInPlayEnabled'].append(market_def['turnInPlayEnabled'])
    new_dict['persistenceEnabled'].append(market_def['persistenceEnabled'])
    new_dict['marketBaseRate'].append(market_def['marketBaseRate'])
    new_dict['eventId'].append(market_def['eventId'])
    new_dict['eventTypeId'].append(market_def['eventTypeId'])
    new_dict['numberOfWinners'].append(market_def['numberOfWinners'])
    new_dict['bettingType'].append(market_def['bettingType'])

如果不需要全部字段,删掉对应声明和追加逻辑即可。

灵活拓展写法

不需要手动写每个字段的追加逻辑,调整字段列表即可适配需求:

# 声明所有需要提取的字段
target_fields = ['id', 'bspMarket', 'turnInPlayEnabled', 'persistenceEnabled', 'marketBaseRate', 'eventId', 'eventTypeId', 'numberOfWinners', 'bettingType']
new_dict = {field: [] for field in target_fields}

for sub_list in my_dict['mc']:
    item = sub_list[0]
    market_def = item['marketDefinition']
    for field in target_fields:
        # id字段在第一层字典,其余在marketDefinition下
        val = item[field] if field == 'id' else market_def[field]
        new_dict[field].append(val)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:36:05