【问题标题】:Create a list of dictionaries without overwriting [duplicate]创建字典列表而不覆盖[重复]
【发布时间】: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


【解决方案1】:

您需要将字典的副本附加到列表中

listOfUser.append(UserInfo.copy())

输出

[{'name': 'john', 'fimily': 'johny', 'studentId': '2120', 'age': 23},
{'name': 'mick', 'fimily': 'micky', 'studentId': '2121', 'age': 24}]

【讨论】:

  • 谢谢亲爱的朋友
猜你喜欢
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
  • 2020-01-23
相关资源
最近更新 更多