如何优化嵌套嵌套列表元素计数的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
相关产品推荐
相关产品推荐

