按祖先分组条目:如何高效构建指定嵌套字典结构
高效构建层级字典的方法
给定数组:
l = ["1", "1.1", "1.1.1", "2", "3"]
需要构建的目标字典结构:
d = {"1": [{"1.1": [{"1.1.1": []}]}], "2": [], "3": []}
实现思路
遍历数组中的每个元素,将元素按.拆分成层级路径片段,从根字典开始逐层构建结构:
- 若当前片段是路径的最后一级,直接在当前层级下创建键,值设为空列表
- 若不是最后一级,检查当前层级是否存在该键,不存在则创建值为
[{}]的键(匹配目标结构中父节点值为包含子字典的列表的格式),然后进入子字典继续处理下一层
代码实现
l = ["1", "1.1", "1.1.1", "2", "3"] result = {} for item in l: parts = item.split('.') current_level = result for idx, part in enumerate(parts): if idx == len(parts) - 1: # 叶子节点,设置为空列表 if part not in current_level: current_level[part] = [] else: # 非叶子节点,创建包含子字典的列表(若不存在) if part not in current_level: current_level[part] = [{}] # 进入下一层的字典 current_level = current_level[part][0] print(result)
运行这段代码后,即可得到目标字典结构。
内容的提问来源于stack exchange,提问作者shevdenvla
相关产品推荐
相关产品推荐

