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)
由于字典值被替换而不是添加,它只是附加相同的字典。我怎样才能解决这个问题?
当您将字典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)