元组到字典词典的列表

马尔泰克

我正在(root, parent1, parent2, child1)从分层数据库中以list of tuplesas的形式检索

[('HCS', 'Assured Build', 'Implementation', 'Hardware Stack'), 
('HCS', 'Assured Build', 'Implementation', 'SA and SF'),
('HCS', 'Assured Build', 'Testing and Validation', 'NFRU-SS'),
('HCS', 'Assured Build', 'Testing and Validation', 'NRFU-UC'), 
('HCS', 'Assured Platform', 'Restoration', 'AS Build'), 
('HCS', 'Assured Platform', 'Restoration', 'Capacity Management'),
('HCS', 'Assured Platform', 'Migration', 'Document Review')]

我想创建一个字典字典,以便轻松地进行迭代并创建树视图:

{"HCS":
      {"Assured Build":
             {"Implementation":{"Hardware Stack", "Software"},
             {"Testing and Validation":{"NRFU-SS", "NRFU-UC"}
      },
      {"Assured Platform":
              {"Restoration":{"AS Build","Capacity Management"},
              {"Migration":{"Document Review"}},
      }

}

处理此问题的最佳方法是什么?我尝试了namedtuple和defaultdict失败。

ec

您需要以下defaultdictdefaultdictdefaultdict的一项list(或set根据需要):

import json
from collections import defaultdict

l = [('HCS', 'Assured Build', 'Implementation', 'Hardware Stack'),
     ('HCS', 'Assured Build', 'Implementation', 'SA and SF'),
     ('HCS', 'Assured Build', 'Testing and Validation', 'NFRU-SS'),
     ('HCS', 'Assured Build', 'Testing and Validation', 'NRFU-UC'),
     ('HCS', 'Assured Platform', 'Restoration', 'AS Build'),
     ('HCS', 'Assured Platform', 'Restoration', 'Capacity Management'),
     ('HCS', 'Assured Platform', 'Migration', 'Document Review')]

d = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
for key1, key2, key3, value in l:
    d[key1][key2][key3].append(value)

print(json.dumps(d, indent=4))

json.dumps()这只是一个漂亮的印刷品。它打印:

{
    "HCS": {
        "Assured Platform": {
            "Restoration": [
                "AS Build",
                "Capacity Management"
            ],
            "Migration": [
                "Document Review"
            ]
        },
        "Assured Build": {
            "Implementation": [
                "Hardware Stack",
                "SA and SF"
            ],
            "Testing and Validation": [
                "NFRU-SS",
                "NRFU-UC"
            ]
        }
    }
}

我们还可以使嵌套的defauldict初始化步骤更加通用,并将其提取为可重用的方法

def make_defaultdict(depth, data_structure):
    d = defaultdict(data_structure)
    for _ in range(depth):
        d = defaultdict(lambda d=d: d)
    return d

然后,您可以替换:

d = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))

和:

d = make_defaultdict(2, list)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python-有向边列表到词典的字典

来自分类Dev

字典到xlwt的列表

来自分类Dev

在Python中将元组列表分组到字典

来自分类Dev

列表字典到字典

来自分类Dev

从元组列表制作字典列表

来自分类Dev

从元组列表创建嵌套字典

来自分类Dev

列表到元组的字典

来自分类Dev

如何在Python中将元组列表转换为字典词典?

来自分类Dev

递归列表到字典

来自分类Dev

Json元组到字典

来自分类Dev

字典和列表对元组的列表理解

来自分类Dev

JS:将字典转换为词典列表

来自分类Dev

如何使用列表列表和元组列表创建字典词典

来自分类Dev

清理列表,字典和元组的字典列表

来自分类Dev

使用列表推导从字典创建词典列表

来自分类Dev

比较元组和列表的字典

来自分类Dev

将字典拆分成词典列表

来自分类Dev

Python-有向边列表到词典的字典

来自分类Dev

字典词典

来自分类Dev

从元组列表制作字典列表

来自分类Dev

在Python中从CSV创建字典词典(或元组?)

来自分类Dev

字典到具有最小值的元组列表

来自分类Dev

键值对到字典的列表

来自分类Dev

更新列表到元组

来自分类Dev

元组到字典词典的列表

来自分类Dev

元组对到字典的列表

来自分类Dev

将值从二进制输出存储到列表/字典/元组(Python)

来自分类Dev

Python:从元组列表到元组字典

来自分类Dev

列表到元组转换列表