问题背景:
Python字典列表中的每一项,存储的是各个字典的引用,而不是一份独立的对象拷贝。
因此每次向字典列表中添加新的字典时,需要用一个新的字典对象,而不能通过修改原有对象的内容来实现。
错误操作:
1 t_dict = dict() 2 t_dict_list = [] 3 4 t_dict['value'] = 1 5 t_dict['label'] = "test1" 6 t_dict_list.append(t_dict) 7 8 t_dict['value'] = 2 9 t_dict['label'] = "test2" 10 t_dict_list.append(t_dict) 11 12 # 两次添加字典,使用同一个字典对象,只是修改了一下其中的内容,因此打印出来会发现列表中的内容都是修改后的内容的重复 14 print(t_dict_list)
正确操作:
t_dict_list = [] t_dict = dict() t_dict['value'] = 1 t_dict['label'] = "test1" t_dict_list.append(t_dict) print(t_dict_list) t_dict = dict() # 创建一个新的字典对象 t_dict['value'] = 2 t_dict['label'] = "test2" t_dict_list.append(t_dict) # 每次添加新数据时都用了一个新的字典对象,因此打印出来可以发现列表中的内容与期望的内容一致 print(t_dict_list)