从父子关系表创建嵌套字典

时间:2020-08-19 15:10:59

标签: python json dictionary nested nested-loops

我的目标是建立一个JSON文件,该文件表示我在excel文件中具有的条目的层次结构。在Excel文件中,每一行都有一列,用于指定父元素的代码,其自身的代码以及条目的描述(不相关)。

parent  code  description
  A      A1    lorem ipsum
  B      B1    lorem ipsum
  C      C1    lorem ipsum
  A      A2    lorem ipsum
  B1     B11   lorem ipsum
  A2     A21   lorem ipsum
  B11    B112  lorem ipsum
          B    lorem ipsum
  ...

在本示例中,我如何以编程方式创建看起来像这样的JSON输出

tree = [
  {
    "code": "A",
    "description": "Lorem Ipsum",
    "childs": [
      {
        "code": "A1",
        "description": "Lorem Ipsum"
      },
      {
        "code": "A2",
        "description": "Lorem Ipsum",
        "childs": [
           {
             "code": "A21",
             "description": Lorem Ipsum"
           }
        ]
      }
    ]
  },
  {
    "code": "B",
    "description": "Lorem Ipsum",
    "childs": [
      {
        "code": "B1",
        "description": Lorem Ipsum",
        "childs": [
           {
             "code": "B11",
             "description": Lorem Ipsum",
             "childs": [...]
           }
        ]
      }
    ]
  },
  ...
]

您明白了...

我尝试了几种不同的方法,但是我无法将最终结果嵌套在嵌套的体系结构中。请注意,层的数量因条目而异。

有什么提示吗?

1 个答案:

答案 0 :(得分:0)

由于您使用的是excel,因此我认为您的数据集不会太大,因此我建议在python中读取文件之前先在excel中执行以下操作:

  1. 在连续的列中递归使用VLOOKUP(直到最大层次级别),然后连接并删除重复项,因此您将得到类似的内容:

    parent childs texts    
    A      A2;A21 lorem;lorem2;lorem21
    B      B2;B11 lorem;lorem2;lorem11
    ...
    
  2. 如果您需要作为根添加json A2,则使用上一步创建的数据集就足够了,否则您将需要删除{{1}中出现code的所有行}}(也可以通过parent轻松完成)

拥有后,只需要将其加载到python中,并逐行创建json。