Django словарь с тем же значением

Я пытаюсь создать словарь с некоторыми определенными значениями, но он получает несколько одинаковых значений

readers = Readers.objects.all()
count = 0
readersResult = {}
teste = {
    "avatar": "",
    "firstName": "",
    "percent": "",
    "lastName": ""
}
for reader in readers:
    test["percent"] = "value from another place"
    test["firstName"] = reader.firstName
    test["lastName"] = reader.lastName
    test["avatar"] = reader.avatar

    print("TEST: ", test)

    readersResult[count] = test
    count = count + 1

print("RESULT":, readersResult) 

Мой вывод:

web_1  | TEST:  {'avatar': '/images/avatars/71.png', 'firstName': 'abc', 'percent': '37.08999158957107', 'lastName': 'def'}
web_1  | TEST:  {'avatar': '/images/avatars/61.png', 'firstName': 'abc', 'percent': '4.037005887300253', 'lastName': 'def'}
web_1  | RESULT:  {0: {'avatar': '/images/avatars/61.png', 'firstName': 'abc', 'percent': '4.037005887300253', 'lastName': 'def'}, 1: {'avatar': '/images/avatars/61.png', 'firstName': 'abc', 'percent': '4.037005887300253', 'lastName': 'def'}}


Что я делаю не так?

Вы присваиваете один и тот же словарь (test) нескольким записям в readersResult, в отличие от создания нового словаря для каждого reader.

В качестве значения словаря можно использовать список:

readers = Readers.objects.all()
count = 0
readersResult = {}
test = {
    "avatar": [],
    "firstName": [],
    "percent": [],
    "lastName": []
}
for reader in readers:
    test["percent"].append("value from another place")
    test["firstName"].append(reader.firstName)
    test["lastName"].append(reader.lastName)
    test["avatar"].append(reader.avatar)

    print("TEST: ", test)

    readersResult[count] = test
    count = count + 1

print("RESULT":, readersResult)

Здесь, в вашем коде, вы создаете dict с именем test, а затем в каждой итерации цикла вы добавляете его снова в readersResult.

test = {
    "avatar": "",
    "firstName": "",
    "percent": "",
    "lastName": ""
}
for reader in readers:
    test["percent"] = "value from another place"
    test["firstName"] = reader.firstName
    test["lastName"] = reader.lastName
    test["avatar"] = reader.avatar

    print("TEST: ", test)

    readersResult[count] = test
    count = count + 1

Вам нужно создавать новый dict с каждой итерацией цикла. Поэтому поменяйте эту часть кода на следующую:

for reader in readers:
    test = {}
    test["percent"] = "value from another place"
    test["firstName"] = reader.firstName
    test["lastName"] = reader.lastName
    test["avatar"] = reader.avatar

    print("TEST: ", test)

    readersResult[count] = test
    count = count + 1

PS: Вам не нужно использовать приведенный ниже код для определения ключей в словаре, а затем устанавливать их значения в другом месте. Поэтому вы можете изменить:

teste = {
    "avatar": [],
    "firstName": [],
    "percent": [],
    "lastName": []
}

с:

test = {}
Вернуться на верх