gpt4 book ai didi

python - list.append() 正在将每个变量替换为新变量

转载 作者:行者123 更新时间:2023-11-28 22:27:08 29 4
gpt4 key购买 nike

我有一个循环,我在其中编辑一个 json 对象并将其 append 到列表中。但是在循环之外,所有旧元素的值都更改为新元素
我的问题类似于 this一个在这里,但我仍然找不到解决我的问题的方法。

这是我的代码:

json_data = open(filepath).read()
data = json.loads(json_data)
dataNew=[]

#opening file to write json
with open(filepath2, 'w') as outfile:
for i in range(50):
random_index_IntentNames = randint(0,len(intent_names)-1)
random_index_SessionIds = randint(0,len(session_id)-1)
timestamp = strftime("%Y-%m-%d %H:%M:%S", gmtime())
data["result"]["metadata"]["intentName"] = intent_names[random_index_IntentNames]
data["sessionId"]=session_id[random_index_SessionIds]
data["timestamp"] = timestamp
dataNew.append(data)
json.dump(dataNew, outfile, indent=2)

最佳答案

列表中的每个项目都只是对内存中单个对象的引用。与链接答案中发布的内容类似,您需要 append 字典的副本。

import copy

my_list = []

a = {1: 2, 3: 4}
b = a # Referencing the same object
c = copy.copy(a) # Creating a different object

my_list.append(a)
my_list.append(b)
my_list.append(c)

a[1] = 'hi' # Modify the dict, which will change both a and b, but not c

print my_list

您可能对 Is Python call-by-value or call-by-reference? Neither. 感兴趣进一步阅读。

关于python - list.append() 正在将每个变量替换为新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44215320/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com