【发布时间】:2020-02-04 07:44:02
【问题描述】:
我正在寻找一种方法来使用 dict User 更新列表 listOfuser 而不会覆盖任何最后一个索引。
[{'name': 'john', 'fimily': 'johny', 'studentId': '2120', 'age': 23},
{'name': 'mick', 'fimily': 'micky', 'studentId': '2121', 'age': 24}]
我目前得到的结果:
[{'name': 'mick', 'fimily': 'micky', 'studentId': '2121', 'age': 24},
{'name': 'mick', 'fimily': 'micky', 'studentId': '2121', 'age': 24}]
产生上述结果的代码sn-p:
UserInfo = {}
listOfUser = []
UserInfo['name'] = "john"
UserInfo['fimily'] = 'johny'
UserInfo['studentId'] = '2120'
UserInfo['age'] = 23
listOfUser.append(UserInfo)
print(listOfUser)
UserInfo['name'] = "mick"
UserInfo['fimily'] = 'micky'
UserInfo['studentId'] = '2121'
UserInfo['age'] = 24
listOfUser.append(UserInfo)
print(listOfUser)
有什么办法吗?
【问题讨论】:
-
字典是引用对象。如果您将引用添加到列表并在之后更改它,那么无论引用指向什么,您的数据都会更改。您可以将字典的副本添加到您的列表中,或者在添加后将字典重置为新字典:
UserInfo = {}在listOfUser.append(UserInfo)之后。看看骗子 - 列表也是引用对象 - 原理相同
标签: python list dictionary append