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

如何统计JSON字典中指定列表内provider数量?TypeError报错求助

解决TypeError并统计Provider数量

嘿,我来帮你搞定这个问题!你遇到的TypeError: list indices must be integers not str,本质是把列表和字典的访问方式搞混了——["lookup_results"]["sources"]返回的是一个列表,里面每个元素才是包含provider键的字典,你不能直接用字符串键去索引列表哦。

错误原因复盘

举个反例,如果你之前写了类似这样的代码:

# 错误写法:直接用字符串索引列表
sources = data["lookup_results"]["sources"]
provider = sources["provider"]  # 这里会触发TypeError

这就错了,因为sources是列表,只能用整数(比如0、1)来访问里面的元素,而不是字符串键。

正确实现方案

1. 先解析JSON(如果原始是字符串格式)

如果你的数据是JSON字符串,先把它转成Python的字典结构:

import json

# 你的原始JSON字符串
json_data = '''{ "address": "8.8.8.8", "lookup_results": { "start_time": "2012-03-11T09:30:37.094Z", "detected_by": 1, "sources": [ { "provider": "name_prov_1", "status": 1 }, { "provider": "name_prov_2", "status": 0 }, { "provider": "name_prov_3", "status": 0 } ] } }'''

# 解析成Python字典
parsed_data = json.loads(json_data)

2. 统计总Provider数量

因为每个列表元素对应一个provider,所以直接取列表的长度就可以:

# 获取sources列表
sources_list = parsed_data["lookup_results"]["sources"]

# 总provider数量就是列表长度
total_provider_count = len(sources_list)
print(f"总Provider数量:{total_provider_count}")  # 输出:3

3. 进阶:统计特定状态的Provider数量

如果需要统计status为1(或其他值)的provider数量,可以用生成器表达式快速实现:

# 统计status=1的活跃Provider数量
active_provider_count = sum(1 for item in sources_list if item["status"] == 1)
print(f"活跃Provider数量:{active_provider_count}")  # 输出:1

这样就能完美解决你的问题啦,以后记住:列表用整数索引,字典用字符串键访问哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:55:34