Python数据类列表高效查找:替代遍历获取指定ID的数据类
优化数据类对象的查找效率
核心思路:用字典存储数据类实例
把原来的列表存储换成字典,以Feld.id作为键,对应的Feld实例作为值。字典的键查找时间复杂度是O(1),远优于列表遍历的O(n),能大幅提升查找效率。
修改后的代码实现
1. 替换存储结构
将原来的列表改为字典:
from dataclasses import dataclass from typing import Dict self.feld_dict: Dict[str, Feld] = {} # 键为id字符串,值为Feld实例
2. 填充数据到字典
替换原有的列表填充逻辑,直接将实例存入字典:
for element in Daten: data = Feld(element[0], element[1], element[2], int(element[3])) self.feld_dict[data.id] = data # 以id作为键存储实例
3. 优化查找方法
原来的遍历查找方法可以简化为直接通过键获取:
def changeValueOf(primaryKey): feld = self.feld_dict.get(primaryKey) if feld: # 执行你的操作,比如修改属性:feld.value1 = "新值" pass
额外注意事项
- Python 3.7及以上版本的普通字典会保留插入顺序,若需要严格维护实例的添加顺序,无需额外处理;低版本可使用
collections.OrderedDict - 如果数据源中存在重复的
id,需要提前处理重复逻辑(比如保留最后一个实例、抛出异常或合并数据),避免后续实例覆盖之前的
内容的提问来源于stack exchange,提问作者Schradt
相关产品推荐
相关产品推荐

