По существующим ответам, чтобы получить из комментариев:
Подумайте об использовании выражения генератора, когда вам нужен только первый соответствующий элемент из последовательности:
d16 = (d for d in lst if d.get('id') == 16).next()
Это шаблон, который вы часто будете видеть в моем коде. Это повысит StopIteration
, если окажется, что в lst
не было предметов, которые соответствовали бы условию. Когда это произойдет, вы можете поймать исключение:
try:
d16 = (d for d in lst if d.get('id') == 16).next()
except StopIteration:
d16 = None
Или еще лучше, просто разверните все это в цикл for, который останавливается
for d16 in lst:
if d16.get('id') == 16:
break
else:
d16 = None
(предложение else:
запускается только в том случае, если цикл for исчерпывает свои входные данные, но пропускается, если цикл for заканчивается, потому что использовался break
)