Не получается сгенерировать словарь

Я пытаюсь сгенерировать словарь (где ключи - имена пользователей (взятые из бд), а значения - количество их опыта (из бд)), чтобы потом его отсортировать и сделать из него строку. Вот код:

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.

→ Ссылка