以下是一个示例代码,展示了如何按照父ID分组:
from collections import defaultdict
# 假设有一个包含节点信息的列表
nodes = [
{'id': 1, 'parent_id': None, 'name': 'Node 1'},
{'id': 2, 'parent_id': 1, 'name': 'Node 2'},
{'id': 3, 'parent_id': 1, 'name': 'Node 3'},
{'id': 4, 'parent_id': 2, 'name': 'Node 4'},
{'id': 5, 'parent_id': None, 'name': 'Node 5'},
{'id': 6, 'parent_id': 5, 'name': 'Node 6'},
]
# 使用defaultdict创建一个字典,用于按照父ID分组
grouped_nodes = defaultdict(list)
# 遍历节点列表,将节点按照父ID分组
for node in nodes:
parent_id = node['parent_id']
grouped_nodes[parent_id].append(node)
# 打印分组结果
for parent_id, group in grouped_nodes.items():
print(f"父ID为 {parent_id} 的节点组:")
for node in group:
print(node)
print()
输出结果:
父ID为 None 的节点组:
{'id': 1, 'parent_id': None, 'name': 'Node 1'}
{'id': 5, 'parent_id': None, 'name': 'Node 5'}
父ID为 1 的节点组:
{'id': 2, 'parent_id': 1, 'name': 'Node 2'}
{'id': 3, 'parent_id': 1, 'name': 'Node 3'}
父ID为 2 的节点组:
{'id': 4, 'parent_id': 2, 'name': 'Node 4'}
父ID为 5 的节点组:
{'id': 6, 'parent_id': 5, 'name': 'Node 6'}
在上述示例中,我们使用了defaultdict(list)
来创建一个默认值为列表的字典。然后,我们遍历节点列表,根据每个节点的父ID将其添加到相应的分组中。最后,我们打印出分组结果。