Я всегда любил делать вещи более читабельными, чем пытаться играть в гольф-код -
- хотя иногда это тоже весело :)
При этом мы можем просто пройтись по каждому элементу в вашей компании и найти целевое имя, а затем мы вернем информацию этой компании:
def get_target_company_info(companies):
TARGET_NAME = 'loans'
for company in companies:
company_id = company.keys()[0]
name_val = company.get(company_id).get('name')
if name_val == TARGET_NAME:
return company
return None
company = get_target_company_info(companies)
print company
выход:
{'c01': {'name': 'loans', 'address': '1 st'}}
Чтобы быть чуть ближе к тому, что вы хотели, мы можем предоставить метод фильтрации util и фильтр как таковой:
метод:
TARGET_NAME = 'loans'
def is_relevant_company(company):
company_id = company.keys()[0]
name_val = company.get(company_id).get('name')
return company if name_val == TARGET_NAME else None
фильтр:
relevant_companies = filter(None, [is_relevant_company(company) for company in companies])
вывод:
[{'c01': {'name': 'loans', 'address': '1 st'}}]