奇怪的问题。列表插入内容不是预期效果

胖子吴 2019-01-16 12:40:21
goods = []
good = {}
lines = ['apple 10 3\n', 'tesla 100000 1\n', 'mac 3000 2\n', 'lenovo 30000 3\n', 'chicken 10 3']
print(lines)
for line in lines:
attrs = line.strip().split(' ')
good['name'] = attrs[0]
good['num'] = attrs[1]
good['price'] = attrs[2]
print(good)
goods.append(good)
print(goods)

['apple 10 3\n', 'tesla 100000 1\n', 'mac 3000 2\n', 'lenovo 30000 3\n', 'chicken 10 3']
{'name': 'apple', 'num': '10', 'price': '3'}
{'name': 'tesla', 'num': '100000', 'price': '1'}
{'name': 'mac', 'num': '3000', 'price': '2'}
{'name': 'lenovo', 'num': '30000', 'price': '3'}
{'name': 'chicken', 'num': '10', 'price': '3'}
# 为什么是这个结果?
[{'name': 'chicken', 'num': '10', 'price': '3'}, {'name': 'chicken', 'num': '10', 'price': '3'}, {'name': 'chicken', 'num': '10', 'price': '3'}, {'name': 'chicken', 'num': '10', 'price': '3'}, {'name': 'chicken', 'num': '10', 'price': '3'}]
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
YXTS122 2019-02-12
  • 打赏
  • 举报
回复
jeky_zhang2013 2019-01-16
  • 打赏
  • 举报
回复
good是数组对象,你加的是同一个对象,引用地址没变
xdn1ce 2019-01-16
  • 打赏
  • 举报
回复
把good={} 放到for循环里面就行了。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧