为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 3 中递归地将文件索引添加到字典中

在 Python 3 中递归地将文件索引添加到字典中

繁星点点滴滴 2022-08-16 18:17:29
我想从字典中的文件添加文本,称为“数据”。该文件如下所示:part-a    thing-a    part-a-a        thing-a    part-a-b        thing-a        thing-bpart-b    thing-a    thing-b    thing-c如何将文件放在字典中,使其看起来像这样?{"all":  [  {  "part-a":    [    "thing-a",    {      "part-a-a":["thing-a"],      "part-a-b":["thing-a","thing-b"]    }    ],  "part-b":    [    "thing-a",    "thing-b",    "thing-c"    ]  }  ]}我真的不知道,怎么做...
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

您可以与递归一起使用:itertools.groupby


from itertools import groupby as gb

import re

def get_dict(d):

   _r, _d = [], {}

   for a, _b in gb(d, key=lambda x:not x[0]):

      if a:

         _r.extend([u for _, u in _b])             

      else:

         _d[_r.pop()] = get_dict([[j[4:], k] for j, k in _b]) 

   return _r+([] if not _d else [_d])

import json

data = [re.findall('^\s+|[\w\-]+', i) for i in filter(None, content.split('\n'))]

print(json.dumps(get_dict([['' if not a else a[0], b] for *a, b in data]), indent=4))

输出:


[

   {

     "part-a": [

        "thing-a",

        {

            "part-a-a": [

                "thing-a"

            ],

            "part-a-b": [

                "thing-a",

                "thing-b"

            ]

        }

      ],

      "part-b": [

        "thing-a",

        "thing-b",

        "thing-c"

      ]

   } 

]


查看完整回答
反对 回复 2022-08-16
  • 1 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信