list赋值的一个小坑
list_a = []
dict_b = {}
for i in range(4):
dict_b["name"] = i
dict_b["price"] = i*100
list_a.append(dict_b)
以为会得到一个四个不同元素的list?错了:全部是:
[{'name': 3, 'price': 300}, {'name': 3, 'price': 300}, {'name': 3, 'price': 300}, {'name': 3, 'price': 300}]
代码要修改为:
list_a = []
for i in range(4):
dict_b = {}
dict_b["name"] = i
dict_b["price"] = i*100
list_a.append(dict_b)
结果才正确:
[{'name': 0, 'price': 0}, {'name': 1, 'price': 100}, {'name': 2, 'price': 200}, {'name': 3, 'price': 300}]
总结
list.append()方法添加的是一个dict对象的引用!而dict对象本身没变,引用多少次还是这个对象。。只有在循环里重置dict对象,才可以改变list的值。