2015-05-26 1 views
1

У меня есть список, который выглядит какКраткий путь Получить соответствующий элемент в списке

[{'name': 'red', 'test':4},... {'name': 'reded', 'test':44}]` 

У меня есть имя (например: reded), и я хочу, чтобы найти словарь в списке выше, что имеет name в словарь установлен на reded. Каков краткий способ сделать это?

Мои попытки выглядеть нечто похожее на

x = [dict_elem for dict_elem in list_above if dict_elem['name']==reded] 

Тогда я

final_val = x[0] 

если имя получает соответствие. Это также можно сделать с помощью for loop, но просто кажется, что для этого есть простой однострочный. Я что-то упускаю?

+0

Ну, вы можете заменить первую строку в ваш второй ... '[dict_elem для dict_elem в list_above если dict_elem [ 'имя'] == reded] [0]' – Eric

ответ

2

Ты в значительной степени там. Если вы используете генератор, а не список, вы можете передать его next, который занимает первый элемент.

try: 
    x = next(dict_elem for dict_elem in list_above if dict_elem['name'] == reded) 
except StopIteration: 
    print "No match found" 

Или

x = next((dict_elem for dict_elem in list_above if dict_elem['name'] == reded), None) 
if not x: 
    print "No match found" 
+1

Самые быстрые пальцы на западе. – Gocht

Смежные вопросы