2017-10-06 107 views
0

我想按级别嵌套字典/数组。字典已经排序,但只是1维。Python - 按值嵌套字典/数组

它看起来像这样:

tables = { 
    1: { 
     'level': 1 
    }, 
    2: { 
     'level': 2 
    }, 
    3: { 
     'level': 3 
    }, 
    4: { 
     'level': 3 
    }, 
    5: { 
     'level': 2 
    }, 
    6: { 
     'level': 3 
    } 
} 

如果以下项目的电平值高于以前,该项目将被嵌套在一个项目。例如第1项的级别为1,第2项的级别为2,所以项目2正在进入第1项

它应是这样的,那么:

tables = { 
    1: { 
     'level': 1, 
     'tables': { 
      2: { 
       'level': 2, 
       'tables': { 
        3: { 
         'level': 3, 
        }, 
        4: { 
         'level': 3 
        } 
       } 
      }, 
      5: { 
       'level': 2, 
       'tables': { 
        6: { 
         'level': 3, 
        } 
       } 
      } 
     } 
    } 
} 
+3

让我们看看你已经尝试了什么?目前还没有一个陈述问题或疑问,而是走了“做我的工作,我请”的做法 – donkopotamus

回答

0

这是经典的递归运动:

def get_next_level(level): 
    result = {} 
    result[level] = {'level': level} 
    if level > max(tables.keys()): 
     return None 
    next_level = get_next_level(level+1) 
    if next_level is not None: 
     result[level].update({'tables': next_level}) 
    return result 

解决方案既简单又容易。你应该这样开始计算:

res_table = {} 
res_table[1] = {'level': 1} 
res_table[1].update({'tables': get_next_level(2)})