我正在尝试用 python 制作一个字典列表。为什么这三种方法不会产生相同的结果?
A = [{}]*2
A[0]['first_name'] = 'Tom'
A[1]['first_name'] = 'Nancy'
print A
B = [{},{}]
B[0]['first_name'] = 'Tom'
B[1]['first_name'] = 'Nancy'
print B
C = [None]*2
C[0] = {}
C[1] = {}
C[0]['first_name'] = 'Tom'
C[1]['first_name'] = 'Nancy'
print C
这是我得到的:
[{'first_name': 'Nancy'}, {'first_name': 'Nancy'}]
[{'first_name': 'Tom'}, {'first_name': 'Nancy'}]
[{'first_name': 'Tom'}, {'first_name': 'Nancy'}]
您的第一种方法是只创建一个字典。它相当于:
templist = [{}]
A = templist + templist
这会扩展列表,但不会复制其中的字典。它也等同于:
tempdict = {}
A = []
A.append(tempdict)
A.append(tempdict)
所有列表元素都是对同一个 tempdict
对象的引用。
我是一名优秀的程序员,十分优秀!