将链接转换为python字典以获取d3.js交互式树

时间:2016-04-05 11:45:17

标签: python algorithm d3.js

我有像这样的分层形式的链接。

root/Arts/
root/Arts/Literature/
root/Arts/Literature/Novels/
root/Arts/Literature/Comics/
root/Sports/
root/Sports/Football/
...

我想绘制它们并可视化树,但是树的深度很多,链接太多了。 使用pydot / graphviz时,我无法查看此树超过3个级别。

我想将此转换为与子项配对的字典键值 像这样

[
{
  "name": "root",
  "parent": "null",
  "children": [
      {
        "name": "Arts",
        "parent": "root",
        "children": [
          {
            "name": "Literature",
            "parent": "Arts",
            "children": [
              {
                "name": "Novels",
                "parent": "Literature"
              },
              {
                "name": "Comics",
                "parent": "Literature"
              }
            ]
          }
        ]
      },
      {
        "name": "Sports",
        "parent": "root",
        "children": [
          {
            "name": "Football",
            "parent": "Sports"
          }
         ]
       }
    ]
}
]

将其绘制到d3.js交互式树

修改

这对我有用 -

def add_to_tree(name, parent, start_tree):
    for x in start_tree:
        if x["name"] == parent:
            x["children"].append({"name":name, "parent":parent, "children":[]})
        else:
            add_to_tree(name, parent, x["children"])

def dic_converter_single_root(sorted_list):
    start_tree = [{"name":"root", "parent":"null", "children":[]}]
    for x in sorted_list:
        name = x.split('/')[-2]
        parent = x.split('/')[-3]
        add_to_tree(name, parent, start_tree)

0 个答案:

没有答案