在python中检索列表中的所有对象是否具有相同的属性值

2024-04-23 15:17:42 发布

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

我想知道如何快速查看列表中的所有对象是否都将某个属性设置为某个值,如果是,则运行部分代码。到目前为止,在我编写的任何需要这个的程序中,我都做了类似于下面代码的事情。你知道吗

listOfObjects = []
class thing():
    def __init__(self):
        self.myAttribute = "banana"
        listOfObjects.append(self)
def checkStuff():
    doSomething = True
    for i in listOfObjects:
        if i.myAttribute != "banana":
            doSomething = False
    if doSomething: print("All bananas, sir!")

我要找的是:

if listOfObjects.myAttribute == "banana":
    print("All bananas, sir!")

Tags: 对象代码self列表if属性defall
2条回答

可以在all函数中使用生成器表达式。你知道吗

def checkStuff():
    doSomething = all(i.myAttribute == 'banana' for i in listOfObjects)
    if doSomething: print("All bananas, sir!")

我想我应该给你一个生成器表达式(和getattr):

all(getattr(item, "myAttribute", False) == "banana" for item in listOfObjects)

如果item没有myAttribute属性,那么这有一个潜在的好处,那就是不会引发。


注意:我最初的回答检查了所有项目是否都具有带有hasattr的属性“banana”:

all(hasattr(item, "banana") for item in listOfObjects)

相关问题 更多 >