如何将元素插入嵌套字典

我有一个字典,希望用来描述随时间变化的数据。然后,我想创建一个外部字典,该字典的时间增量为键,而前面提到的字典为值。

但是,当我尝试在给定的时间步中更改嵌套字典中的一个元素时,具有相同字典键的所有时间步也会被更改。

我希望内部字典具有相同的键,但是能够为不同的时间步插入唯一的值。

为什么会这样?

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']) 仍应为空列表。或者至少那是我想要实现的。

m1994 回答:如何将元素插入嵌套字典

之所以发生这种情况,是因为您正在将对同一可变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','c']} for timestep in range(time)}
本文链接:https://www.f2er.com/3134822.html

大家都在问