Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm Python-从输入数据生成分层字典(树)_Algorithm - Fatal编程技术网

Algorithm Python-从输入数据生成分层字典(树)

Algorithm Python-从输入数据生成分层字典(树),algorithm,Algorithm,这似乎与尝试有一定关系,我能够在python中使用输入生成trie。您可以使用递归,并创建深度限制来确定何时开始将新节点收集到单个列表中: Input data = [1,12,122,14] . Output data = { "1": { "children": [ { "12": { "children": [ {

这似乎与尝试有一定关系,我能够在python中使用输入生成trie。

您可以使用递归,并创建深度限制来确定何时开始将新节点收集到单个列表中:

Input data = [1,12,122,14] .     
Output data = 
    {
      "1": {
        "children": [
          {
            "12": {
              "children": [
                {
                  "122": {
                    "children": []
                  }
                }
              ]
            }
          },
          {
            "14": {
              "children": []
            }
          }
        ]
      }
    }
输出:

def trie(d, current = 0, depth = 2):
  if len(d) == len(data):
     return {d[0]:{'children':filter(None, [trie(d[1:]), {d[-1]:{'children':[]}}])}}
  if current == depth:
     return [{i:{'children':[]}} for i in d]
  return {d[0]:{'children':trie(d[1:], current+1)}}

new_data = [[1,12,122,14], [1,12,122,123,14],  [1,14,16,12,122,123]]
new_list = [trie(sorted(i, key=lambda x:str(x))) for i in new_data]

你能写下问题是什么吗?这有点像一个没有尝试的trie。你的问题是什么?您正在尝试生成前缀树吗?你写了什么代码?输出数据是在您当前获取的数据之上还是在您想要获取的数据之上?您能展示一下您的尝试吗?通常,树和递归函数可以很好地协同工作。此外,子项可能不应该是dict的列表…嗨,对于输入=[1,12122123,14],输出是预期的o/p是@ajax1234首先激活数组我们必须按字典顺序对其排序->数据=[1,14,16,12122123]数据=排序数据,key=lambda x:strx,然后继续以分层格式输入@Ajax1234@iajnr请看我最近的编辑。我创建了一个单独的列表,将每个测试列表作为元素,并在每个列表上调用trie。感谢您的解决方案,但是12应该与14和16平行,但是14和16被列为12的子项@AJAX1234也给定输入=[1,3]输出应为@Ajax1234
[{1: {'children': {12: {'children': [{122: {'children': []}}, {14: {'children': []}}]}}}}, {1: {'children': {12: {'children': [{122: {'children': []}}, {123: {'children': []}}, {14: {'children': []}}]}}}}, {1: {'children': [{12: {'children': {122: {'children': [{123: {'children': []}}, {14: {'children': []}}, {16: {'children': []}}]}}}}, {16: {'children': []}}]}}]