@Quietqqs

TypeError: list indices must be integers or slices, not str?

dota_players2 = [
{'id': 1, 'role': 'offlane', 'nickname': 'Collapse', 'mmr': 11000},
{'id': 2, 'role': 'carry', 'nickname': 'Yatoro', 'mmr': 12000},
{'id': 3, 'role': 'mid', 'nickname': 'Lari', 'mmr': 10000}
]


@app.patch('/players/{player_id}')
def change_player_name(player_id: int, new_nickname: str):
current_player = list(filter(lambda player: player.get('id') == player_id, dota_players2))
current_player['nickname'] = new_nickname
return current_player

ведь после итерации current_player является отдельным словарём, так почему не получается взять элемент по ключу?

P.S. я знаю что можно поменять на численное значение и всё будет окей, но у моего знакомого всё работало и так
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Ты создаешь список, а не первый элемент получаешь.
list(filter(lambda player: player.get('id') == player_id, dota_players2))

Если хочешь просто отфильтровать, то замени list на next
next(filter(lambda player: player.get('id') == player_id, dota_players2))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы