检查对象列表是否包含具有特定属性值的对象 [英] Check if list of objects contain an object with a certain attribute value

查看:94
本文介绍了检查对象列表是否包含具有特定属性值的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想检查我的对象列表是否包含具有特定属性值的对象.

I want to check if my list of objects contain an object with a certain attribute value.

class Test:
    def __init__(self, name):
        self.name = name

# in main()
l = []
l.append(Test("t1"))
l.append(Test("t2"))
l.append(Test("t2"))

例如,我想要一种检查列表是否包含名称为"t1"的对象的方法.怎么做到呢?我发现 https://stackoverflow.com/a/598415/292291

I want a way of checking if list contains an object with name "t1" for example. How can it be done? I found https://stackoverflow.com/a/598415/292291,

[x for x in myList if x.n == 30]               # list of all matches
any(x.n == 30 for x in myList)                 # if there is any matches
[i for i,x in enumerate(myList) if x.n == 30]  # indices of all matches

def first(iterable, default=None):
    for item in iterable:
        return item
    return default

first(x for x in myList if x.n == 30)          # the first match, if any

我不想每次都遍历整个列表,我只需要知道是否有1个匹配的实例即可. first(...)any(...)或其他方式可以做到吗?

I don't want to go through the whole list every time, I just need to know if there's 1 instance which matches. Will first(...) or any(...) or something else do that?

推荐答案

As you can easily see from the documentation, the any() function short-circuits an returns True as soon as a match has been found.

any(x.name == "t2" for x in l)

这篇关于检查对象列表是否包含具有特定属性值的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆