python - 如何将扁平化的 json 数据转换为分类字符串?
问题描述
我有这样的数据,也就是输入数据:
data = ['a-aa-aab', 'a-aa-aaa', 'b-ba', 'a-aa-aab-aaba', 'a-aa-aab-aabb']
我想把它转换成这样的分类字符串,也就是输出数据:
root a b
a a-aa
a-aa a-aa-aab a-aa-aaa
a-aa-aab a-aa-aab-aaba a-aa-aab-aabb
b b-ba
我认为这个示例中有一个递归解决方案,但我不知道如何实现这个目标。如果你碰巧知道答案,请告诉我,上帝保佑你!
解决方案
from collections import defaultdict
data = ['a-aa-aab', 'a-aa-aaa', 'b-ba', 'a-aa-aab-aaba', 'a-aa-aab-aabb']
result = defaultdict(set)
for string in data:
parts = string.split('-')
for i in range(len(parts)):
key = '-'.join(parts[:i])
val = '-'.join(parts[:i+1])
result[key].add(val)
print(result)
for prefix, children in result.items():
print(prefix or 'root', *children)
推荐阅读
- wicket - 检票口中同一列下的多个按钮链接
- go - 您可以在单独的文件中创建结构标签吗?
- python - 如果列存在于df中,如何根据条件在Pandas中删除列数据框(df)?
- c - 缩放,调整 bmp 结构大小,编程 c
- java - java - 如何在Java中运行带有-u参数和json数据的curl命令?
- html - 背景颜色后的bootstrap 4列高问题
- java - 如何使用 java 流重新组合树形图
- php - 是否可以仅获取 PHP 中列的一部分?
- android - uiautomatorviewer 文件不存在。相反 uiautomatorviewer.jar 可用
- java - 检查 Web 元素值的布尔方法