python 一个由字典构成的列表,修改其中1个字典的键的值,却把该列表所有字典相同的键的值都一起修改了?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 一个由字典构成的列表,修改其中1个字典的键的值,却把该列表所有字典相同的键的值都一起修改了?相关的知识,希望对你有一定的参考价值。

问题可能有点绕,但其实问题很简单,麻烦看一下代码就知道了:list = []dict = for i in range(3): dict['color'] = 'red' dict['speed'] = 'slow' dict['points'] = 5 list.append(dict)list[0]['points'] = 8print listprint '\n'我只想修改list[0]中的points值,但却把整个列表中的值都修改了。

参考技术A 因为你使用了浅复制。
修改办法是把list=[]放到for语句里面
建议,不要使用关键字或者内建方法作为变量(list, dict都是内建方法)

python之元组,列表和字典的区别

Python语言包含6种内建的序列,其中,有两种主要的类型:列表和元组。

列表是可以修改的,而元组不可以,如果要添加或者删除某些元素,就只能用列表,为了限制某些元素,就会用到元组。一般来说,列表可以替代元组。在列表之中,有索引,分片,加,乘等等。

一、list(列表) 用方括号[]
列表是Python的一种内置数据类型,list是一种有序的集合,可以随时添加和删除其中的元素。
获取list中的元素用角标获取,角标可以使用正角标,也可以使用负角标,越界时抛出IndexErro
list中的元素的数据类型也可以不一样(就像Java一样),也可以在list内放另外一个list,这样也就形成了一个多维集合

常用的方法有:

1.len()获取列表的长度

2.X.append(“你好”)  向列表中添加元素

3.X.pop()弹出末尾元素

1 zoo = [pig,tiger,dog]
2 print(len(zoo))
3 zoo.append("nihao")
4 print(zoo)
5 print(zoo.pop())
6 print(zoo[0])
7 print(zoo[-1])

二、tuple(元组) 用小括号()

元祖也是一种有序列表,和list非常类似,不同点是tuple一旦定义了就不可修改,在一定意义上这也提高了代码的安全性,查询方法和list一样,使用的时候能用tuple的就用tuple。
在定义只有一个元素的元祖时加入"逗号"以免产生和数学运算的歧义

可变的tuple
当元祖内部放一个列表的时候,这个元祖中的列表的值就可以变化了,实际上tuple并没有改变,变的是内部list的值

1 country = (bj,[sh,gd])
2 print(country[1])
3 print(country[1][0])
4 country[1][0] ="nihao"
5 print(country[1][0])

三、字典

Dictionary (字典) : 用{}来定义
Dict={‘name‘:‘Pei‘, ‘age‘:‘26‘}

 











以上是关于python 一个由字典构成的列表,修改其中1个字典的键的值,却把该列表所有字典相同的键的值都一起修改了?的主要内容,如果未能解决你的问题,请参考以下文章

python字典

如何修改 Python 字典值并创建字典列表?

字典的定义和操作 (Python)

python数据分析NumPy入门

Python已有列表和字典,为什么还需要元组?

python基础--列表元祖字典集合