在python中如何通过属性访问特定的类实例?

2024-04-28 21:17:44 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个有两个属性的类框,自我内容以及自身编号. 我在一个名为box的列表中有box的实例。有没有办法通过属性访问/修改一个特定的实例,而不是遍历各个框?例如,如果我想要一个箱号=40(列表未排序)修改其内容的最佳方法是什么。在


Tags: 实例方法box内容列表属性排序编号
3条回答

使用过滤器内置:

wanted_boxes = filter(lambda box: box.number == 40, boxes)

最直接的方法是使用列表理解:

answer=[box for box in boxes if box.number==40]

不过,还是要小心。这实际上是对整个list进行迭代。由于list没有排序,没有比遍历它更快的方法(从而进行线性搜索),除非您想将所有数据复制到其他数据结构中(例如dictset或对{}进行排序)。在

如果您需要更频繁地执行此操作,并且您有唯一的number,那么请创建一个字典:

numberedBox = dict((b.number, b) for b in Boxes)

然后,您可以直接使用数字访问您的框:

^{pr2}$

但是如果你想改变他们的号码,你也必须修改numberedBox字典。。。在

否则是的,您必须迭代列表。在

相关问题 更多 >