#在我看来,一定有更好的方法来查找数据类对象,而不是遍历所有对象来找到特定的对象.

#My way, that I hope to improve:
def changeValueOf(primaryKey):
    for item in self.addlist:
        if item.id == primaryKey:
            # Do stuff...


#Basics:
listOfKeys = "AA BB CC".split()

@dataclass
class Feld:
    id: str
    value1: str
    value2: str
    value3: str

self.addlist: List = []

for element in Daten:
    data = Feld(element[0], element[1], element[2], int(element[3]))
    self.addlist.append(data)

推荐答案

跟踪类的所有实例的一种常见而有效的方法是按特定键将每个实例存储在dict的类变量中,并使用类方法按键检索实例.在您的示例中,使用id属性作为键:

from typing import ClassVar
from dataclasses import dataclass

@dataclass
class Feld:
    _id_to_instance: ClassVar[dict] = {}
    id: str
    value: str

    def __post_init__(self):
        self._id_to_instance[self.id] = self

    @classmethod
    def get_instance_by_id(cls, id):
        return cls._id_to_instance[id]

因此:

for id, value in ('id1', 'value1'), ('id2', 'value2'):
    Feld(id, value)

print(Feld.get_instance_by_id('id2'))

输出:

Feld(id='id2', value='value2')

演示:https://ideone.com/KgQH5y

Python-3.x相关问答推荐

如何从Django连接到Neo4J s AuraDB(免费层)?'

按小时和日期对Pandas 数据帧进行分组

Strawberry FastAPI:如何调用正确的函数?

以某种方式分割字符串

以特定方式重新排列 pandas 数据框的列

Python中提取每个组/ID所属特定列中的自然数

为什么不能用格式字符串 '-' 绘制点?

Pandas 窗口聚合两个排序表

Pandas 窗口聚合两个排序表

将逗号分隔的字符串类型系列转换为整数列表 pandas

Python多进程:运行一个类的多个实例,将所有子进程保留在内存中

spinbutton调整up/down箭头

为什么 Django South 1.0 使用 iteritems()?

Python中调用者函数的访问变量

AttributeError:LinearRegression 对象没有属性coef_

将 numpy.float64 列表快速转换为 Python 中的浮点数

如何将文档字符串放在 Enums 上?

如何避免使用我的 python 包构建 C 库?

为什么异步库比这个 I/O 绑定操作的线程慢?

如何将发音相似的词放在一起