如何将chunk对象按名称分类到对应列表?优化可扩展性代码方案
优化方案:基于字典实现可扩展的Chunk分类
核心思路
用字典映射chunk_name到对应列表,彻底摆脱手动定义变量和重复判断的局限,无论新增多少种chunk_name都能自动适配,完全具备扩展性。
代码实现
基础原生写法
不需要额外导入模块,用原生字典即可实现:
# 初始化空字典,键为chunk_name,值为对应chunk的列表 chunk_groups = {} for chunk in self.chunk_collection: name = chunk.chunk_name # 若当前chunk_name未在字典中,先创建空列表 if name not in chunk_groups: chunk_groups[name] = [] chunk_groups[name].append(chunk)
更简洁的写法(使用collections.defaultdict)
借助标准库的defaultdict,可以自动为不存在的键创建默认空列表,进一步简化代码:
from collections import defaultdict chunk_groups = defaultdict(list) for chunk in self.chunk_collection: chunk_groups[chunk.chunk_name].append(chunk)
后续使用示例
分类完成后,通过字典键即可快速获取对应分组的chunk列表,用get方法还能避免键不存在时抛出异常:
# 获取chunk_name为"0"的所有chunk,若不存在则返回空列表 zero_chunks = chunk_groups.get("0", [])
优势对比
- 可扩展性:新增任意
chunk_name无需修改代码,自动适配分组 - 代码简洁:消除大量重复的
if判断和变量定义,减少冗余 - 可读性:逻辑清晰直观,一眼就能理解是按
chunk_name进行分组
内容的提问来源于stack exchange,提问作者raceee
相关产品推荐
相关产品推荐

