题解 | #姓名与学号# 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()

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 18:54
说等下个版本吧的发呆爱好者很贪睡:佬最后去了哪家呀
点赞 评论 收藏
分享
死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 10:48
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务