这是主展平元素,也称为输入数据:
['a-ab-aba-abaa-abaaa', 'a-ab-aba-abab', 'a-ac-aca-acaa', 'a-ac-aca-acab']
这是我需要的目标数据,也称为输出数据:
[
{
"title": "a",
"children": [
{
"title": "ab",
"children": [
{
"title": "aba",
"children": [
{
"title": "abaa",
"children": [
{
"title": "abaaa"
}
]
},
{
"title": "abab"
}
]
}
]
},
{
"title": "ac",
"children": [
{
"title": "aca",
"children": [
{
"title": "acaa"
},
{
"title": "acab"
}
]
}
]
}
]
}
]
我想我可以使用deepforloop迭代来生成这个json数据,但这太困难了,因为level的num将大于10。所以我认为for循环不能在这个过程中完成,是否有任何算法或使用打包的代码来实现一个函数来实现这个目标? 如果你能分享你的想法,我非常感激,上帝保佑你
这是一个开始:
我看不到一个干净的方法一次完成所有的工作,所以我在
template
字典之间创建了这个。现在,如果一个“节点”没有子节点,它对应的dict将包含'children': []
如果愿意,可以在create_final
函数中更改此行为下面是一个使用itertools的递归解决方案。我不知道这对你来说是否足够有效,但它确实有效。它的工作原理是将字符串列表转换为列表列表,然后使用相同的第一个键将其划分为列表,然后构建dict并在删除第一个键的情况下重复
输出:
要将此dict转换为json,可以使用json模块中的
json.dumps
。我希望我的解释清楚您可以使用
collections.defaultdict
:输出:
相关问题 更多 >
编程相关推荐