为什么append会把字典叠加?
DataSet = open(r'/home/ly/Desktop/CHY/SCIENCE_DATA/Data_Set_01labelDel0Col.csv', 'rb')
reader_DataSet = csv.reader(DataSet)
headers = reader_DataSet.next()
Fisher = {}
featureList = []
for row in reader_DataSet:
ChangeStrToFloat = {}
for i in range(0, 3):
ChangeStrToFloat[i] = float(row[i])
if i <= 1:
Fisher[i] = math.atan(ChangeStrToFloat[i])
else:
Fisher[i] = ChangeStrToFloat[i]
print Fisher
# print ChangeStrToFloat
featureList.append(Fisher)
# featureList.append(ChangeStrToFloat)
print featureList
当featureList.append(ChangeStrToFloat)时,非常正常,下面给出其中一个append之后print的结果:
[{0: 0.162, 1: 0.278, 2: 0.034}, {0: 0.369, 1: 0.199, 2: 0.054}]
但当featureList.append(Fisher)时,就会把前面的字典用新的字典覆盖掉,再添加进去,就变成了两个一样的新的字典在列表里:
[{0: 0.35350004816363706, 1: 0.196433836738036, 2: 0.054}, {0: 0.35350004816363706, 1: 0.196433836738036, 2: 0.054}]
请高手解答!谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
字典应该放for循环里面
Fisher[i]这里内容,你仔细打印核对一下,问题应该在这里。程序没报错,内容和预想的不符,就检查内容的来源,看看哪里有问题。featureList.append(Fisher)这个位置层次也看看,是不是放在循环体内了。