Рефакторинг поиска в Python
Как правильно будет переписать эту вот часть кода?
roles = [{'Id': 1, 'Name': 'Модератор'}, {'Id': 2, 'Name': 'Пользователь'}]
participant_ = {'Name': 'Elmir', 'Surname': 'I-de', 'RoleId': 1}
...
current_role = None
for role in roles:
if role['Id'] == participant_['RoleId']:
current_role = UserRole(
id=role['Id'],
name=role['Name']
)
break
...
# использование current_role
Почему-то мне кажется что есть способ сделать это лучше (оптимизированнее) чем сейчас.
Ответы (1 шт):
Автор решения: E1mir
→ Ссылка
Впрочем я сделал как посоветовал в комментариях insolor (Благодарен за идею). И получилось вот так:
roles = {}
async for role in await fetch_roles():
roles[role['Id']] = role['Name']
...
try:
p_role_id = participant_['RoleId']
current_role = UserRole(
id=p_role_id,
name=roles[p_role_id]
)
except KeyError:
current_role = None