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

如何遍历字典内的嵌套列表并统计指定关键词的总数?

解决嵌套字典/列表中关键词统计问题

你的代码存在的问题

  • 第二个for循环末尾缺少冒号,属于语法错误,实际运行会报错
  • 用yes作为循环变量,直接覆盖了初始定义的计数变量yes,最后打印的是循环迭代的最后一个键名(比如示例里的list1),而非统计结果
  • 硬编码subDict1键名,无法处理多层嵌套或其他键的结构,且没有遍历列表内的元素,自然统计不到目标关键词

正确实现:递归遍历嵌套结构

因为你的数据是多层嵌套的字典和列表,最稳妥的方式是用递归函数遍历所有层级,遇到字符串就检查是否匹配目标关键词:

def count_keyword(data, keyword):
    count = 0
    if isinstance(data, dict):
        # 遍历字典的所有值,递归处理
        for value in data.values():
            count += count_keyword(value, keyword)
    elif isinstance(data, list):
        # 遍历列表的所有元素,递归处理
        for item in data:
            count += count_keyword(item, keyword)
    elif isinstance(data, str):
        # 是字符串则判断是否匹配关键词
        if data == keyword:
            count += 1
    # 其他非字符串/字典/列表类型直接忽略
    return count

# 测试示例(包含多个子列表)
dict1 = {
    "subDict1": {
        "list1": ["yes", "yes", "no"],
        "list2": ["yes", "no", "yes"],
        "subDict2": {
            "list3": ["no", "yes"]
        }
    }
}
# 统计"yes"的数量
print(count_keyword(dict1, "yes"))  # 输出5

代码说明

  • 递归函数会自动处理任意层级的嵌套字典和列表
  • 遇到字典时,遍历其所有值继续递归;遇到列表时,遍历所有元素继续递归
  • 遇到字符串时,判断是否等于目标关键词,是则计数+1
  • 其他类型(如数字、布尔值)会被直接忽略,不影响统计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:35:01