gpt4 book ai didi

python - 定义嵌套字典的简单方法?

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:04 26 4
gpt4 key购买 nike

我有一些嵌套的 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 个 bin。

是否有更简单的方法来定义和初始化字典,以便在脚本中构建非常大字典?而且,更改字典结构是一场噩梦。当然,我想做这样的事情:

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

我可以做些什么来使这个问题更简单、更容易管理?谢谢!

最佳答案

不要使用对字典的引用,而是使用 copy.deepcopy()创建它们的深拷贝。这样更新其中一个就不会影响其他的:

from copy import deepcopy

binDict = {'Tally01': 0, 'Tally02': 0}
groupDict = {'Bin01': deepcopy(binDict), 'Bin02': deepcopy(binDict)}
periodDict = {'Group01': deepcopy(groupDict), 'Group02': deepcopy(groupDict)}

关于python - 定义嵌套字典的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46392712/

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