创建具有相同键的字典列表?

Raf*_*ayo 8 python django dictionary for-loop

我想创建一个列表,其中包含 x 个字典,所有字典都包含相同的键,但在 for 循环中具有不同的值:

就像是

[{'name': Brenda, 'Age': 22, 'Sex': Female},
 {'name': Jorda, 'Age': 32, 'Sex': Male},
 {'name': Richard, 'Age': 54, 'Sex': Male}]
Run Code Online (Sandbox Code Playgroud)

我的代码是这样的:

people = []
person = {}

humans = gethumans()

    for human in humans:
        number_people, people_data = People.data()
        person['name'] = human.name
        person['age'] = human.age
        person['Sex'] = human.name
        people.append(person)
Run Code Online (Sandbox Code Playgroud)

我的输出是这样的:

[{'name': Richard, 'Age': 54, 'Sex': Male},
 {'name': Richard, 'Age': 54, 'Sex': Male}
 {'name': Richard, 'Age': 54, 'Sex': Male}]
Run Code Online (Sandbox Code Playgroud)

由于字典值被替换而不是添加,它只是附加相同的字典。我怎样才能解决这个问题?

mka*_*kam 7

当您将字典person附加到列表people 时,您只是将对该字典的引用附加到列表中,因此该列表最终仅包含对 SAME 字典的引用。

由于每次循环时您都会用新值覆盖字典,因此列表最后只包含对您添加的最后一个人的引用。

您需要做的是为每个人创建一个新字典,例如:

for human in humans:
    number_people, people_data = People.data()
    person = dict()
    person['name'] = human.name
    person['age'] = human.age
    person['Sex'] = human.name
    people.append(person)
Run Code Online (Sandbox Code Playgroud)