我有一些嵌套的python字典。我想用字典来组织我的脚本计算的各种总计。我把字典定义为:
periodDict = {'Group01':{'Bin01':{'Tally01':0, 'Tally02':0}, \
'Bin02':{'Tally01':0, 'Tally02':0}}, \
'Group02':{'Bin01':{'Tally01':0, 'Tally02':0}, \
'Bin02':{'Tally01':0, 'Tally02':0}}}
我的问题是,在真实的脚本中,我有52个句点,25个组和12个箱子。你知道吗
有没有一种更简单的方法来定义和初始化字典,即在脚本中构建一个非常大的字典?而且,对词典结构进行修改是一场噩梦。当然,我想做一些类似的事情:
binDict = {'Tally01':0, 'Tally02':0}
groupDict = {'Bin01':binDict, 'Bin02':binDict}
periodDict = {'Group01':groupDict, 'Group02':groupDict}
但这不起作用,因为对Group01计数的任何更改也会更改相应的Group02计数。例如:
In [1]: binDict = {'Tally01':0, 'Tally02':0} #Initalize to 0
In [2]: groupDict = {'Bin01':binDict, 'Bin02':binDict}
In [3]: periodDict = {'Group01':groupDict, 'Group02':groupDict}
In [4]: periodDict['Group01']['Bin01']['Tally01'] = 1 # Change one value
In [5]: periodDict['Group01']['Bin01']['Tally01']
Out[5]: 1
In [6]: periodDict['Group02']['Bin01']['Tally01'] # Group 2 also changed
Out[6]: 1
我能做些什么使这个问题更简单,更容易处理?谢谢!你知道吗
如果您真的需要从一开始就初始化整个字典,您可以这样做:
只需使用循环,就可以通过编程方式创建它,不要“手动”创建它:
结果是:
这样,您就不会共享
dict
:使用^{} 来创建字典的深度副本,而不是使用对字典的引用。这样更新其中一个不会影响其他:
相关问题 更多 >
编程相关推荐