python 字典数组 append疑惑 为什么创建的字典被append到数组之后 修改这个字典直接影响了数组 20
names=[]defsearchAll(filePath=os.getcwd()):x={'old':'dummy'}foriinrange(0,2):print'0x...
names=[]def searchAll(filePath=os.getcwd()): x={'old':'dummy'} for i in range(0,2): print '0x01',names x['old']=i print '0x02',names names.append(x) print '0x03',names if __name__ == '__main__': searchAll() #renameAll()
上面的代码我期望得到的是
[{'old': 0}, {'old': 1}]
可总是用新的1 覆盖前面的0
好郁闷啊 展开
上面的代码我期望得到的是
[{'old': 0}, {'old': 1}]
可总是用新的1 覆盖前面的0
好郁闷啊 展开
展开全部
import os
names=[]
def searchAll(filePath=os.getcwd()):
#x={'old':'dummy'} 把这里移到for 里面
for i in range(0,2):
x={'old':'dummy'}#移到这里
print '0x01',names
x['old']=i
print '0x02',names
names.append(x)
print '0x03',names
if __name__ == '__main__':
searchAll()
#解释一哈 因为names=[{'old': 0}]的时候 x={'old': 0},这个时候循环到1 这个时候你改变
x['old']=1 那么names=[{'old': 0}]里面的 {'old': 0}==》{'old': 1} ,
names里面的{'old': 0} 和x 指向同一内存地址 一边都变
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询