【发布时间】:2021-10-19 14:37:40
【问题描述】:
我有一个由值数组组成的字典,我想获取与条件相关的所有值。这是结构的虚拟样本:
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}
我想知道更好的方法来迭代这种类型的字典。在这种情况下,最好的方法是什么?
【问题讨论】:
-
字典似乎有一个树结构,其中一个节点有一个特定的字符串值和可能的其他子节点。在您的示例中,每个列表只有一个子元素(因此树只是一个链)。这是否总是正确的,如果不是,您是要一起打印每个级别中的所有条件(广度优先)还是进行深度优先遍历?
标签: python python-3.x list dictionary