Вы можете использовать if
в своем понимании списка:
[typeB for typeB in typeBlist if typeB.typeA == typeA]
Это вернет всех членов typeBlist
, для которых typeB.typeA == typeA
.
Если вы уверены, что есть только одно совпадение, вы можете использовать выражение генератора, чтобы прекратить работу по всему списку:
try:
return (typeB for typeB in typeBlist if typeB.typeA == typeA).next()
except StopIteration:
return None
Если вы много делаете этот поиск, может быть проще создать dict
для отображения с typeA
на typeB
.
lookup = dict((typeB.typeA,typeB) for typeB in typeBlist)
Затем вы можете использовать это снова так:
typeB = lookup[typeA]
Если у вас может быть много typeB
записей для каждого typeA
, ваш поиск будет сопоставлять typeA
с list
из typeB
s:
from collections import defaultdict
lookup = defaultdict(list)
for typeB in typeBlist:
lookup[typeB.typeA].append(typeB)