2012-02-21 4 views
52

オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかを確認します。オブジェクトのリストに特定の属性値を持つオブジェクトが含まれていることを確認してください。

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 

を見つけ、私はちょうど一致するtheresの1つのインスタンスかどうかを知る必要があります。 first(...)またはany(...)になりますか?

+0

'first()'関数は、 'next()'と呼ばれるビルトインとして利用できます。 –

答えて

84

documentationから簡単にわかるように、any()は、機能が不足していると、一致が見つかるとすぐにTrueを返します。

any(x.name == "t2" for x in l) 
関連する問題