Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查属性是否等于任何对象列表中的特定字符串_Python - Fatal编程技术网

Python 检查属性是否等于任何对象列表中的特定字符串

Python 检查属性是否等于任何对象列表中的特定字符串,python,Python,每个对象都有一个属性名称。我想检查这些对象的name属性中是否包含特定字符串 [,] 执行此操作最有效的方法是什么?如果只需要检查一次,则可以尝试使用in运算符和生成器表达式 if "pizza" in (ball.name for ball in balls): ... 如果您要检查几次,您可以提前准备一套/记录: balls_names = set(ball.name for ball in balls) #build a dict if you want to use the ball

每个对象都有一个属性
名称
。我想检查这些对象的
name
属性中是否包含特定字符串

[,]


执行此操作最有效的方法是什么?

如果只需要检查一次,则可以尝试使用in运算符和生成器表达式

if "pizza" in (ball.name for ball in balls): ...
如果您要检查几次,您可以提前准备一套/记录:

balls_names = set(ball.name for ball in balls) #build a dict if you want to use the ball after it is found...
#much later in the code...
if "pizza" in balls: ...

后一种方法将占用更多内存,但速度更快,因为它是O(1)查找

其他答案将使用您已经使用的轨迹(“任意”)为您提供答案。如果您想知道在哪个球对象中找到特定名称,可以使用:

bouncyballs = [<bouncy.ball object at 0x7fdf8649ef10>, <bouncy.ball object at 0x7fdf863616d0>, < bouncy.ball object at 0x7fdf863616d0>]
C = 'string'

nameFound = False
for ball in bouncyballs:
    if ball.name == C:
        # Do what you like
        print('%s is in %s!' % (C, ball['name']))
        nameFound = True

print(nameFound)
bouncyballs=[,]
C='string'
nameFound=False
对于反弹球中的球:
如果ball.name==C:
#做你喜欢做的事
打印('%s在%s!'中!'%(C,ball['name']))
nameFound=True
打印(找到姓名)

我认为您使用
any
和生成器表达式是正确的

>>> class A:
...  def __init__(self,name):
...   self.name = name
... 
>>> a=A('bob')
>>> b=A('mike')
>>> c=A('lelsley')
>>> l=[a,b,c]
>>> any('mike' in x.name for x in l)
True
>>> any('xyz' in x.name for x in l)
False

您已经尝试了什么?我尝试了以下操作:
如果有的话(x.name==“C”代表实例[1]中的x)。bouncyballs)
,其中
bouncyballs
是列表,C是我试图匹配的字符串。您可以编辑问题并将代码放入其中。这更容易理解:)看起来不错。有什么问题吗?谢谢。是的,我需要检查数百个弹跳球的名称。这就是为什么我要求最有效的方法。@natab-请注意,如果添加或删除了球,您必须更新容器。在任何情况下,您都不希望每次都构建set/dict