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

如何从JSON字典提取信息:生成颜色列表并筛选红色对应月份

解决方法:生成宝石颜色列表&筛选红色宝石对应月份

错误原因

你遇到的'string indices must be integers'错误,是因为循环时误遍历了外层字典的键(比如写了for gem in data:),而非data['gems']列表里的宝石字典。data是个字典,直接遍历会拿到键名(字符串'gems'),此时用gem['colour']试图用字符串索引字符串,自然触发报错。

1. 生成所有宝石的颜色列表

遍历data['gems']列表,提取每个字典中的colour字段即可:

data = {'gems': [{'name': 'garnet', 'colour': 'red', 'month': 'January'},
                {'name': 'emerald', 'colour': 'green', 'month': 'May'},
                {'name': "cat's eye", 'colour': 'yellow', 'month': 'June'},
                {'name': 'sardonyx', 'colour': 'red', 'month': 'August'},
                {'name': 'peridot', 'colour': 'green', 'month': 'September'},
                {'name': 'ruby', 'colour': 'red', 'month': 'December'}]}

# 列表推导式写法(简洁)
all_colors = [gem['colour'] for gem in data['gems']]
print(all_colors)  # 输出: ['red', 'green', 'yellow', 'red', 'green', 'red']

# 传统for循环写法
all_colors = []
for gem in data['gems']:
    all_colors.append(gem['colour'])

2. 筛选颜色为红色的宝石对应月份

遍历data['gems'],通过if判断筛选出colour为'red'的条目,提取其month字段:

# 列表推导式写法(简洁)
red_gem_months = [gem['month'] for gem in data['gems'] if gem['colour'] == 'red']
print(red_gem_months)  # 输出: ['January', 'August', 'December']

# 传统for循环+if写法
red_gem_months = []
for gem in data['gems']:
    if gem['colour'] == 'red':
        red_gem_months.append(gem['month'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:05:25