在Python3中递归地向字典添加文件索引

在Python3中递归地向字典添加文件索引,python,python-3.x,dictionary,recursion,Python,Python 3.x,Dictionary,Recursion,我想从字典中的一个名为“数据”的文件中添加文本。该文件如下所示: part-a thing-a part-a-a thing-a part-a-b thing-a thing-b part-b thing-a thing-b thing-c 我怎样才能把这个文件放进字典,所以它看起来像这样 {“全部”: [ { “a部分”: [ “一件事”, { “part-a-a”:[“thing-a”], “a

我想从字典中的一个名为“数据”的文件中添加文本。该文件如下所示:

part-a
    thing-a
    part-a-a
        thing-a
    part-a-b
        thing-a
        thing-b
part-b
    thing-a
    thing-b
    thing-c
我怎样才能把这个文件放进字典,所以它看起来像这样

{“全部”:
[
{
“a部分”:
[
“一件事”,
{
“part-a-a”:[“thing-a”],
“a-b部分”:[“a部分”、“b部分”]
}
],
“b部分”:
[
“一件事”,
“东西b”,
“东西c”
]
}
]
}

我真的不知道怎么做…

你可以使用
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])

输出:

[
   {
     "part-a": [
        "thing-a",
        {
            "part-a-a": [
                "thing-a"
            ],
            "part-a-b": [
                "thing-a",
                "thing-b"
            ]
        }
      ],
      "part-b": [
        "thing-a",
        "thing-b",
        "thing-c"
      ]
   } 
]

您的文件看起来与您到目前为止尝试的内容相似?
[
   {
     "part-a": [
        "thing-a",
        {
            "part-a-a": [
                "thing-a"
            ],
            "part-a-b": [
                "thing-a",
                "thing-b"
            ]
        }
      ],
      "part-b": [
        "thing-a",
        "thing-b",
        "thing-c"
      ]
   } 
]