尝试在 python 中创建字典列表时出现意外列表[重复]

2024-06-25

我正在尝试创建一个字典列表。预期输出是,对于 5 个学生,列表中应该有 5 个字典项目,键为 Name 和 Marks(在列表中)。我得到的输出是迭代中最后一个学生的信息重​​复 5 次。请让我知道我在哪里犯了错误。

import random
name_list=[]
name_list = ['A','B','C','D','E']
stud_dict=dict()
stud_dict_list = []
for name in name_list:
    mark_list = []
    for i in range(1,11):
        mark_list.append(random.randint(0,100))
    stud_dict['Name']=name
    stud_dict['Marks']=mark_list
    stud_dict_list.append(stud_dict)
print(stud_dict_list) 

output:
[{'Name': 'E', 'Marks': [91, 71, 93, 33, 52, 90, 97, 98, 41, 18]}, {'Name': 'E', 'Marks': [91, 71, 93, 33, 52, 90, 97, 98, 41, 18]}, {'Name': 'E', 'Marks': [91, 71, 93, 33, 52, 90, 97, 98, 41, 18]}, {'Name': 'E', 'Marks': [91, 71, 93, 33, 52, 90, 97, 98, 41, 18]}, {'Name': 'E', 'Marks': [91, 71, 93, 33, 52, 90, 97, 98, 41, 18]}]

这个问题已经被问过很多次了,但我没有时间去寻找精确的重复 ATM,所以:

Python never除非明确要求,否则复制东西。在这里,您要添加same一遍又一遍地听写到你的列表中:

>>> import random
>>> name_list=[]
>>> name_list = ['A','B','C','D','E']
>>> stud_dict=dict()
>>> stud_dict_list = []
>>> for name in name_list:
...     mark_list = []
...     for i in range(1,11):
...         mark_list.append(random.randint(0,100))
...     stud_dict['Name']=name
...     stud_dict['Marks']=mark_list
...     stud_dict_list.append(stud_dict)
... 
>>> stud_dict
{'Name': 'E', 'Marks': [94, 51, 79, 82, 84, 76, 92, 96, 7, 52]}
>>> id(stud_dict)
139663685096344
>>> [id(item) for item in stud_dict_list]
[139663685096344, 139663685096344, 139663685096344, 139663685096344, 139663685096344]
>>> 

由于它是完全相同的字典,因此字典的每次更新当然都会反映在列表中。解决方案很简单,每次创建一个新的字典:

import random
name_list = ['A','B','C','D','E']
stud_dict_list = []
for name in name_list:
    mark_list = []
    for i in range(1,11):
        mark_list.append(random.randint(0,100))
    stud_dict = {'Name': name, 'Marks': mark_list}
    stud_dict_list.append(stud_dict)

你也想阅读本文以了解有关 Python 变量的更多信息 https://nedbatchelder.com/text/names.html...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试在 python 中创建字典列表时出现意外列表[重复] 的相关文章

随机推荐