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

如何优化嵌套嵌套列表元素计数的Python代码(禁用内置函数/库)

嵌套列表元素频率统计代码优化方案

需求说明

统计任意深度嵌套列表中各元素的出现频率,要求不得使用内置函数或第三方库。

输入示例:

items = [10, "ninety nine", [99, 250, [90, "fifty"], 4.5, [50, 80], 90, "ninety nine"], ["fifty"]]

期望输出:

{10: 1, 'ninety nine': 2, 99: 1, 250: 1, 90: 2, 'fifty': 2, 4.5: 1, 50: 1, 80: 1}

当前代码存在的问题

现有代码靠固定层级的嵌套循环处理列表,每多一层嵌套就得新增一层循环,扩展性极差;同时判断元素是否在字典、更新计数的逻辑重复出现多次,代码冗余度高,维护起来麻烦。

优化方案

1. 提取重复的计数逻辑

把更新频率字典的代码抽成独立函数,避免重复编写相同的判断和计数逻辑。

2. 用递归处理任意深度的嵌套列表

递归可以自动适配任意层级的嵌套:遍历元素时,若当前元素是列表,就递归遍历该子列表;若不是列表,就调用计数函数更新频率字典。

优化后的代码

items = [10, "ninety nine", [99, 250, [90, "fifty"], 4.5, [50, 80], 90, "ninety nine"], ["fifty"]]

def update_count(element, freq_dict):
    """更新元素的出现频率"""
    if element in freq_dict:
        freq_dict[element] += 1
    else:
        freq_dict[element] = 1

def traverse_nested_list(lst, freq_dict):
    """递归遍历嵌套列表,统计元素频率"""
    for item in lst:
        if isinstance(item, list):
            traverse_nested_list(item, freq_dict)
        else:
            update_count(item, freq_dict)

freq_dict = {}
traverse_nested_list(items, freq_dict)
print(freq_dict)

代码说明

  • update_count函数:专门负责处理元素的计数更新,把重复的判断逻辑集中到一处,后续修改只需调整这一个函数。
  • traverse_nested_list函数:递归遍历所有元素,不管列表嵌套多少层,都能自动处理,解决了原代码层级固定的问题。
  • 整体结构清晰,代码复用性和扩展性大幅提升,新增嵌套层级无需修改遍历逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:54:29