Python如何获取字典指定key对应的所有层级下属元素列表
实现方案
可以用广度优先搜索(BFS)实现,逻辑清晰且运行效率高:
- 首先初始化队列,存入目标key的直接下属元素
- 依次取出队列中的元素加入结果集,同时检查该元素是否在字典中存在下属,存在则将下属全部加入队列末尾
- 队列清空后得到的结果集就是所有层级的下属元素
def get_hierarchy(data, target_key): res = [] # 初始化待处理队列,直接取目标key的一级下属 queue = data.get(target_key, []).copy() while queue: # 取出队首元素处理 current = queue.pop(0) res.append(current) # 若当前元素有下属,追加到待处理队列 if current in data: queue.extend(data[current]) return res # 测试用例 T = {'a': ['b','c'], 'c': ['d', 'r'], 's': ['k']} print(get_hierarchy(T, 'a'))
运行上述代码输出结果为['b', 'c', 'd', 'r'],符合预期。
如果使用场景中可能出现循环引用(比如a的下属包含b,b的下属又包含a),可以新增去重逻辑避免死循环,优化后版本如下:
def get_hierarchy(data, target_key): res = [] visited = set() queue = data.get(target_key, []).copy() while queue: current = queue.pop(0) if current not in visited: visited.add(current) res.append(current) if current in data: queue.extend(data[current]) return res
内容的提问来源于stack exchange,提问作者luizpy
相关产品推荐
相关产品推荐

