Python - 按值嵌套dict /数组

时间:2017-10-06 05:57:23

标签: python

我想按级别值嵌套dict / array。该词典已经排序,但只是一维。

看起来像这样:

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

如果下一项的等级值高于前一项,则该项应嵌套在前一项中。例如,ITEM 1的级别为1,ITEM 2的级别为2,因此ITEM 2将进入ITEM 1。

它应该是这样的:

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

1 个答案:

答案 0 :(得分: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)})