json串的地址和list.append(json)的地址都是一致的

list.append()的本质就是建立一个索引,去指向你想要往列表里添加的数据.
我有一个需求, 想要生成一个列表嵌套字典的数据, 这个数据里包裹着十个字典, 这十个字典只有一个键的键值不一样,其他的键值对都一致, 应该如何实现呢?
在这里插入图片描述

我本来是打算通过list.append()添加十次来实现, 想着每次append之前修改我想要修改的键值对,
但是我发现最后生成的数据文件里,这个键值对的数值全部都一样,而且都是最后一次的数据.
由于python的 time.time()只能获取到秒的时间戳,所以我就给它加上了随机数以及英文字符一起拼接.
我想了很久,当时以为自己的方法写错了, 最后才发现就是被最后一次的数据覆盖了, 那么有没有可能是内存指向的原因?
在这里插入图片描述
在这里插入图片描述

最后果然验证了我的想法, 就是因为它们的内存地址都是一样的,所以我每次修改json串以后再append, 但是实际上就是每次改动的都是同一个内存地址上的变量.
而且python里, 用一个变量去承接另一个变量, 实际上就是单例模式.
所以我用一个变量给另一个变量赋值,然后用这个变量修改了键值对, 实际上改的都是同一个内存指向的数据.
在这里插入图片描述

那么如果想要解决我上面那个需求,此时可以考虑将想要修改的数据用"w"的方式打开一个文件,写进去, 然后用一个新的变量去接收读取的数据, 之后再添加到指定的容器里, 最后当数据获取完毕后序列化到指定的文件中.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值