题解 | #姓名与学号# list中有dict
姓名与学号
https://www.nowcoder.com/practice/ab68195587de46c59e2d327a4942d345
写了一个Python脚本,按行读取数据并转成一个字典,每行的字典追加到一个列表之中,打印列表时,却发现列表元素都是最后一行的字典。这是因为加入到list中的是变量,实行的是浅拷贝,只是把地址传进去了,对变量进行操作,list中内容也会跟着变化。举例子:
dic={"Name":"TOP"}
list=[dic]
dic["Age"]=80
print(list)
输出
[{'Name': 'TOP', 'Age': 80}]
如果这样的话:
dic={"Name":"TOP"}
list=[dic]
dic={'Name': 'TOP', 'Age': 80}
print(list)
输出就会是:
[{'Name': 'TOP'}]
这是因为第三行的dic已经不是原来的dic了,因此list的内容不会再变化。
列表作为列表元素同理:
a=[1,2]
list=[a]
del a[0]
print(list)
输出:
[[2]]
因此,如果想把列表或者字典作为元素循环加入列表中,每次循环都要初始化一下这个列表或字典。
或者,使用“深拷贝”的方法,如:
list+=[a[:]]
1
这样,a[:]相当于new了一个list,之后修改a也不会对list造成影响啦。
————————————————
版权声明:本文为CSDN博主「twentyonepilots」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/twentyonepilots/article/details/113344931
list = [{'name': 'Niuniu', 'Student ID': 1}, {'name': 'Niumei', 'Student ID': 2}, {'name': 'Niu Ke Le', 'Student ID': 3}]
获取元素的值
for i in list:
print([name])
i[0].keys()