gpt4 book ai didi

python - 如何迭代多个级别和值数组的字典

转载 作者:行者123 更新时间:2023-12-04 14:02:10 24 4
gpt4 key购买 nike

我有一个由值数组组成的字典,我想获取与条件相关的所有值。这是结构的虚拟示例:

d = {'condition': 'Approval expected.', 'sub_conditions': [
{'condition': 'Approved Activities: {reading} {crafting}', 'sub_conditions': [
{'condition': 'Field Areas: # of areas, dimensions - {start_date} {end_date} {email}', 'sub_conditions': [
{'condition': 'Room Areas: # of rooms, dimensions - {start_date} {end_date} {email}',
'sub_conditions': []}]}]}]}

subconditions 是由我想要获得的条件组成的字典数组。目前,我正在按如下方式访问每个条件值:

for layer_one in d['sub_conditions']:
print(layer_one['condition'])
for layer_two in layer_one['sub_conditions']:
print(layer_two['condition'])
for layer_three in layer_two['sub_conditions']:
print(layer_three['condition'])
#it can have more layers

这给了我需要的输出:

Approved Activities: {reading} {crafting}
Field Areas: # of areas, dimensions - {start_date} {end_date} {email}
Room Areas: # of rooms, dimensions - {start_date} {end_date} {email}

我想知道更好的方法来迭代这种类型的字典。在这种情况下,最好的方法是什么?

最佳答案

每当您发现自己不确定嵌套结构可以达到多少层时,请考虑递归。

获取您的代码,并将其修改为递归函数,我们在“父”字典上调用该函数,然后对存在于其中的每个“内部”字典进行递归。

def recurse(curr_dict):
if 'sub_conditions' in curr_dict:
for inner_dict in curr_dict['sub_conditions']:
print(inner_dict['condition'])
recurse(inner_dict)

d = {'condition': 'Approval expected.', 'sub_conditions': [
{'condition': 'Approved Activities: {reading} {crafting}', 'sub_conditions': [
{'condition': 'Field Areas: # of areas, dimensions - {start_date} {end_date} {email}', 'sub_conditions': [
{'condition': 'Room Areas: # of rooms, dimensions - {start_date} {end_date} {email}',
'sub_conditions': []}]}]}]}

recurse(d)

输出与您的代码相同的内容,但现在您不必担心添加更多循环,无论字典嵌套了多少层,递归代码都应该可以工作。

Approved Activities: {reading} {crafting}
Field Areas: # of areas, dimensions - {start_date} {end_date} {email}
Room Areas: # of rooms, dimensions - {start_date} {end_date} {email}

关于python - 如何迭代多个级别和值数组的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69632851/

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