我有以下代码:
results = {'location': [], 'analysis_Elem 1': [], 'analysis_Elem 2': [], 'analysis_Elem 3': []}
def collectResults(step):
new_results = results
for key in d: #here, d is another dictionary with a lot of results read from .csv file with the same keys as in the results dictionary
for line in d[key]:
if step in line[0]:
new_results[key].append(float(line[-1].strip())/1000)
for line in d[key]:
if step in line[0]:
new_results['location'].append(float(line[-4].strip()))
return new_results
res1 = collectResults('Time-step 7')
res2 = collectResults('Time -step 2')
在这个函数中,我试图在一个字典中满足 if 语句时收集结果,该字典由带有相应空列表的键组成。这个想法是每次调用函数 collectResults() 时,我都想获得分配给变量的结果;比如上面的res1,res2。我遇到的问题是 new_results = results 行导致在第二次调用该函数后,字典 new_results(因此也是 res2)包括第二次调用扩展的第一次调用的结果。我知道它们具有相同的内存地址,这就是覆盖的原因。对于列表,可以使用例如 list() 轻松解决。我无法在字典的情况下找到解决方案。需要怎么做才能获得每次调用的解耦结果?
红颜莎娜
相关分类