gpt4 book ai didi

python - 解析 Python 字典键

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:57 25 4
gpt4 key购买 nike

有什么方法可以捕获 pickle 字典的完整结构吗?如果我有这个 pickle 文件:

{
'9': {
'Dual': {
'spectrum' : ...,
'interferogram': ...,
'SNR': ...
},
'Top': {
'spectrum' : ...,
'interferogram': ...,
'SNR': ...
},
'Bottom': {
'spectrum' : ...,
'interferogram': ...,
'SNR': ...
}
},
'10': ...,
'11': ...
}

我想要的是一个查看pickle文件中所有键的快捷方式,而不需要这样做:

lvl1 = dictionary.keys()
lvl2 = dictionary['9'].keys()
lvl3 = dictionary['9']['Dual'].keys()

因为我不会提前知道 pickle 文件中的 key ,但我会知道有 3 个级别。

我想以某种方式获得字典的不同层,如下所示:

lvl1.keys() = {'9','10','11'}
lvl2.keys() = {'Dual', 'Top', 'Bottom'}
lvl3.keys() = {'spectrum', 'interferogram', 'SNR'}

谢谢!

最佳答案

如果您愿意假设结构自始至终都是相同的,那么这有一个自然的递归解决方案:

def layers(data):
try:
keys = [data.keys()]
except ValueError:
return
rest = layers(next(iter(data.values())))
return keys + rest if rest else keys

或者在 3.x 中:

from collections.abc import Mapping

def layers(data):
if isinstance(data, Mapping):
yield data.keys()
yield from layers(next(data.values()))

此解决方案的优点是它不依赖于您知道层数。

[{'9','10','11'}, {'Dual', 'Top', 'Bottom'}, {'spectrum', 'interferogram', 'SNR'}]

关于python - 解析 Python 字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23573757/

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