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

Python递归统计嵌套列表内字符串出现次数的功能实现需求

嵌套列表结构字符串频次统计递归实现

需求说明

输入为任意嵌套层级的列表结构,元素仅为字符串或子列表,需要统计所有字符串在整个结构中的总出现次数,返回统计结果字典。

待实现函数签名

def count_strings(data: list, pos=None, result: dict = None) -> dict:
    """

    :param data: 待统计的嵌套列表结构
    :param pos: 当前遍历的列表下标位置
    :param result: 累计统计结果字典
    :return: 字符串为键、对应出现次数为值的统计字典
    """

原有尝试代码问题分析

现有代码存在几个核心逻辑错误:

  • 没有对匹配到的字符串做计数更新操作
  • 子列表处理逻辑错误,没有递归传入子列表本身,反而重复遍历当前列表导致死循环
  • 边界判断错误,pos > len(data) 应该改为 pos >= len(data),列表下标最大值为len(data)-1
  • 参数初始值判断逻辑不完整,只处理了两个参数都为None的情况

正确递归实现代码

def count_strings(data: list, pos=None, result: dict = None) -> dict:
    """

    :param data: 待统计的嵌套列表结构
    :param pos: 当前遍历的列表下标位置
    :param result: 累计统计结果字典
    :return: 字符串为键、对应出现次数为值的统计字典
    """
    # 初始化参数
    if result is None:
        result = {}
    if pos is None:
        pos = 0
    
    # 递归终止条件:当前列表遍历完成
    if pos >= len(data):
        return result
    
    current_item = data[pos]
    if isinstance(current_item, str):
        # 当前元素是字符串,更新计数
        result[current_item] = result.get(current_item, 0) + 1
        # 遍历下一个元素
        return count_strings(data, pos + 1, result)
    elif isinstance(current_item, list):
        # 当前元素是子列表,先递归统计子列表内容
        count_strings(current_item, 0, result)
        # 子列表统计完成后遍历当前列表下一个元素
        return count_strings(data, pos + 1, result)

参数作用说明

  • pos:标记当前正在遍历的列表下标,遍历完当前元素后+1继续递归,直到等于列表长度终止当前层的遍历
  • result:贯穿整个递归过程的统计字典,所有层级的字符串计数都更新到同一个字典对象中,避免重复创建和合并字典的开销

测试用例验证

运行以下测试代码可验证输出符合预期:

# 测试用例1
print(count_strings([[], ["J", "*", "W", "f"], ["j", "g", "*"], ["j", "8", "5", "6", "*"], ["*", "*", "A", "8"]]))
# 预期输出:{'J': 1, '*': 5, 'W': 1, 'f': 1, 'j': 2, 'g': 1, '8': 2, '5': 1, '6': 1, 'A': 1}

# 测试用例2
print(count_strings([[], [], [], [], ["h", "h", "m"], [], ["m", "m", "M", "m"]]))
# 预期输出:{'h': 2, 'm': 4, 'M': 1}

# 测试用例3
print(count_strings([]))
# 预期输出:{}

# 测试用例4
print(count_strings([['a'], 'b', ['a', ['b']]]))
# 预期输出:{'a': 2, 'b': 2}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:06:03