我有一个字典,希望用来描述随时间变化的数据。然后,我想创建一个外部字典,该字典的时间增量为键,而前面提到的字典为值。
但是,当我尝试在给定的时间步中更改嵌套字典中的一个元素时,具有相同字典键的所有时间步也会被更改。
我希望内部字典具有相同的键,但是能够为不同的时间步插入唯一的值。
为什么会这样?
infoVC.infoBar = barSelected
time = 3
inner_dict = dict([(i,[]) for i in ['a','b','c']])
outer_dict= dict([(time_step,inner_dict) for time_step in range(time)])
test[1]['a'] = 20
print(test[2]['a'])
仍应为空列表。或者至少那是我想要实现的。
答案 0 :(得分:0)
之所以发生这种情况,是因为您正在将对同一可变inner_dict
的引用传递给外部字典中的每个时间步。您需要为每个时间步骤创建一个内部dict的单独实例。尝试做这样的事情:
outer = dict([(time_step, {i:[] for i in ['a', 'b', 'c']}) for time_step in range(time)])
或者只是简单地理解
outer = {timestep: {i:[] for i in ['a', 'b', 'c']} for timestep in range(time)}