【发布时间】:2011-11-16 12:59:04
【问题描述】:
我确信在 Python 中(或在推送中,Javascript)中有一种优雅的方式来执行此操作,但对于我的生活,我看不到它......
我有一个 CSV 文件,格式如下:
ID, Name, Description
A, A-name,
A100, A100-name, A100-desc
A110, A110-name, A110-desc
A111, A111-name, A111-desc
A112, A112-name, A112-desc
A113, A113-name, A113-desc
A120, A120-name, A120-desc
A131, A131-name, A131-desc
A200, A200-name, A200-desc
B, B-name,
B100, B100-name, B100-desc
B130, B130-name, B130-desc
B131, B131-name, B131-desc
B140, B140-name, B140-desc
我想生成一个层次化的 JSON 结构,这样我就可以可视化 theJIT 中的数据。
var json = {
"id": "aUniqueIdentifier",
"name": "usually a nodes name",
"data": {
"some key": "some value",
"some other key": "some other value"
},
"children": [ *other nodes or empty* ]
};
我的计划是将 ID 映射到 id,将 Name 映射到 name,Description 映射到 data.desc,并组织层次结构,以便:
- 根是 A 和 B 的父级
- A 是 A100 和 A200 的父代
- A100 是 A110 和 A120 的父级
- A110 是 A111、A112 和 A113 的父代
- B 是 B100 的父级
- B100 是 B130 和 B140 的父代
- B130 是 B131 的父代
在其他常规的按 ID 排序中也有一个病态的情况,其中 A100 是 A131 的父级(预期的 A130 不存在)。
我希望找到一个优雅的 Python 解决方案来解决这个问题,但此刻它正在打败我,甚至忽略了病态的情况......
【问题讨论】:
-
我不确定您提供的数据如何映射到您提供的 JSON 结构。你能澄清一下这个例子吗?
-
“数据”中应该包含什么?
-
输入文件应该按这种方式排序还是可以随机排列?是否至少有一个父节点总是在子节点前面?