循环添加列表值遇问题:如何生成含不同Name值的字典列表?
解决循环添加字典到列表的重复值问题
问题原因
字典是可变对象,你在循环中始终修改同一个字典a,列表b里存储的都是这个字典的引用,所以最终所有元素都会显示最后一次修改后的结果。
修改方案
方案1:每次循环创建新字典
把字典的定义放到循环内部,确保每次迭代都生成一个全新的字典:
b = [] for i in range(1, 5): a = {"Name": i} print(a) b.append(a) print(b)
方案2:添加时复制字典
如果需要保留外部字典的定义,可以在添加到列表时复制当前字典的副本,避免引用同一个对象:
a = {} b = [] for i in range(1, 5): a["Name"] = i print(a) b.append(a.copy()) # 或使用 dict(a) 实现复制 print(b)
两种方案运行后都能得到预期结果:[{'Name': 1}, {'Name': 2}, {'Name': 3}, {'Name': 4}]
内容的提问来源于stack exchange,提问作者Duy Nhut Bui
相关产品推荐
相关产品推荐

