如何在Python中将含元组键的嵌套字典新增层级
字典元组键转嵌套层级解决方案
问题描述
现有嵌套字典dic1,其第二层键为元组,结构如下:
dic1={'a': {('a', 'b'): ['c','d'], ('a', 'c'): ['d','f','g'], ('c', 'k'): ['f','h'], ('c', 'j'): [], ('h', 'z'): ['w'] }}
需要将第二层的元组键拆分为新的嵌套层级,转换为如下目标结构:
{ 'a': { 'a': { 'b': ['c', 'd'], 'c': ['d', 'f', 'g'] }, 'c': { 'k': ['f', 'h'], 'j': [] }, 'h': { 'z': ['w'] } } }
尝试以下代码未得到预期结果:
dic2 = {k:[i[0] for i in v] for k,v in dic1.items()}
解决方案
通过嵌套遍历拆分元组键,逐步构建新的嵌套结构,代码如下:
dic2 = {} for top_key, inner_dict in dic1.items(): dic2[top_key] = {} for tuple_key, value in inner_dict.items(): first_key, second_key = tuple_key if first_key not in dic2[top_key]: dic2[top_key][first_key] = {} dic2[top_key][first_key][second_key] = value
代码说明
- 遍历原始字典的顶层键与对应内层字典,初始化新字典的顶层结构;
- 拆分每个内层元组键为两个子键,作为新的嵌套层级;
- 若第一层子键未在新字典中存在,先创建空字典占位;
- 将原列表值映射到新的嵌套路径下。
运行上述代码后,即可得到目标嵌套字典结构。
内容的提问来源于stack exchange,提问作者H_H
相关产品推荐
相关产品推荐

