개체 목록에 특정 속성 값을 가진 개체가 포함되어 있는지 확인


104

내 개체 목록에 특정 속성 값을 가진 개체가 포함되어 있는지 확인하고 싶습니다.

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을 찾았습니다 .

[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(...)또는 뭔가 다른 그런 짓을?


first()함수는라는 내장 기능으로 사용할 수 있습니다 next().
Sven Marnach 2012

답변:


169

쉽게에서 볼 수 있듯이 문서any()기능 단락은 반환 True곧 경기로 발견되었습니다.

any(x.name == "t2" for x in l)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.