Возврат определенного dict из списка dicts

Если бы у меня был следующий код

attributes = [] attributes.append({'attribute': 'noir', 'group': 'coloris', 'id': '8'}) attributes.append({'attribute': 's', 'group': 'taille_textile', 'id': '29'}) attributes.append({'attribute': 'm', 'group': 'taille_textile', 'id': '24'}) attributes.append({'attribute': 'l', 'group': 'taille_textile', 'id': '25'}) attributes.append({'attribute': 'xl', 'group': 'taille_textile', 'id': '26'}) 

и я хотел вернуть объект списка, в котором содержался определенный идентификатор, что было бы лучшим способом сделать это?

Я знаю, что одним из решений было бы использовать цикл for подобный этому

 def getItemById(id): for i in attributes: for k,v in i.items(): if (k == 'id' and v == id): return i 

Я уверен, что должен быть гораздо более элегантный или эффективный способ сделать это иначе, чем это?

Есть ли возможность использовать лямбда здесь? обеспечит ли производительность?

Например, вы хотите вернуть объект с 'id'='29'

Это работает

 [x for x in attributes if x['id']=='29'][0] {'attribute': 's', 'group': 'taille_textile', 'id': '29'} 

Вы можете использовать генератор:

 next(attr for attr in attributes if attr['id'] == id_to_find) 

Другой подход заключается в преобразовании списка в pandas DataFrame.

  import pandas as pd df = pd.DataFrame(attributes) #get all columns where id=8 print df[df['id']=='8'] #get specific column where id=29 print df['attribute'][df['id']=='29']