FirstOrDefault python

Подскажите пожалуйста, есть ли в python функция LINQ как в C# FirstOrDefault? У меня имеется список, содержащий словари:

ls = [
       {'id': 23, 'name': 'John'},
       {'id': 58, 'name': 'Maria'}
     ]

Как мне вернуть из этого списка, словарь, где id=58? В C# можно сделать следующим образом:

var value = ls.FirstOrDefault(l => l['id'] == 58)

Есть ли в python что-то подобное? Или мне придётся через for все значения перебирать? Буду очень благодарен любой помощи


Ответы (1 шт):

Автор решения: CrazyElf

Совсем аналогичная конструкция будет выглядеть несколько более тяжеловесно:

ls = [{'id': 23, 
    'name': 'John'},
    {'id': 58,
    'name': 'Maria'}]

print(next(filter(lambda x: x['id'] == 58, ls), None))

Аналогии тут примерно такие:

Python C#
filter(lambda x: x['id'] == 58, ...) (l => l['id'] == 58)
next(..., None) FirstOrDefault(...)
→ Ссылка