在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"
]
}
]