在 Python 中搜索对象列表

2024-02-22

假设我正在创建一个简单的类,其工作方式与 C 风格结构类似,仅保存数据元素。我试图弄清楚如何在对象列表中搜索属性等于特定值的对象。下面是一个简单的例子来说明我正在尝试做的事情。

例如:

class Data:
    pass

myList = []

for i in range(20):
    data = Data()
    data.n = i
    data.n_squared = i * i
    myList.append(data)

我将如何搜索 myList 列表以确定它是否包含 n == 5 的元素?

我一直在谷歌搜索并搜索Python文档,我想我也许可以通过列表理解来做到这一点,但我不确定。我可能会补充一点,顺便说一句,我必须使用 Python 2.4.3,因此我无法使用任何新的 gee-whiz 2.6 或 3.x 功能。


您可以获得以下列表all使用列表理解匹配元素:

[x for x in myList if x.n == 30]  # list of all elements with .n==30

如果您只是想确定列表中是否包含any匹配并(相对)有效地执行的元素,您可以这样做

def contains(list, filter):
    for x in list:
        if filter(x):
            return True
    return False

if contains(myList, lambda x: x.n == 3)  # True if any element has .n==3
    # do stuff
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中搜索对象列表 的相关文章