Не получается сгенерировать словарь
Я пытаюсь сгенерировать словарь (где ключи - имена пользователей (взятые из бд), а значения - количество их опыта (из бд)), чтобы потом его отсортировать и сделать из него строку. Вот код:
users = []
user_xp = list(cursor.execute(f"SELECT points FROM users").fetchall())
top_users = {}
for user in [user for user in list(cursor.execute("SELECT name FROM users").fetchall())]:
users.append(re.sub("[)|(,']", "", str(user)))
for user in users:
for xp in user_xp:
top_users[user] = list(xp)[0]
print(top_users)
Но в результате я получаю вот такой словарь:
{'MERFAID#': 1000, 'Brainstorm1451#': 1000}
Хотя должен был получится такой:
{'MERFAID#': 0, 'Brainstorm1451#': 1000}
Помогите плиз.
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Не очень понятно, что у вас за входные данные. И почему бы не сделать один запрос к БД сразу обоих полей и не создать словарь сразу.
Но в общем случае, если вам надо склеить 2 списка в словарь, то это делается так:
user_xp = [1,2,3]
users = ["Вася", "Петя", "Маша"]
top_users = dict(zip(users, user_xp))
{'Вася': 1, 'Маша': 3, 'Петя': 2}
А то что сейчас у вас написано - вы каждому top_users[user] присваиваете последний элемент списка user_xp.