Python嵌套字典:计算父键的最大键数

时间:2018-05-09 17:56:36

标签: python dictionary jinja2

可能我的问题措辞不太正确。这是一个问题:

代码:

import jinja2
import pprint


dict = {'PRI_KEY_1': {'SEC_KEY_1': {'KEY_1': 'abcd',
                                    'KEY_2': 'wef'}},
        'PRI_KEY_2': {'SEC_KEY_2': {'KEY_3': 'cwc API',
                                    'KEY_4': 'r34f',
                                    'KEY_5': 'f4f-ef',
                                    'KEY_6': 'dse',
                                    'KEY_7': '78ik',
                                    'KEY_8': 'k9k'},
                      'SEC_KEY_1': {'KEY_9': 'kk7 API',
                                    'KEY_10': '9u',
                                    'KEY_11': 'gtgr-45gr',
                                    'KEY_12': 'ggrer',
                                    'KEY_13': 'nmb',
                                    'KEY_14': 'ekj',
                                    'KEY_15': 'das3',
                                    'KEY_16': '5lusf',
                                    'KEY_17': '3rt5hf',
                                    'KEY_18': 'f4gth',
                                    'KEY_19': 'dfghtgr',
                                    'KEY_20': 'chy',
                                    'KEY_21': 'xdvgrw'}}}
temp_list = []

for key in dict['PRI_KEY_2']:
    temp_list.append(len(dict['PRI_KEY_2'][key]))

print('Rowspan needed for PRI_KEY_2:',max(temp_list))

输出:

Rowspan needed for PRI_KEY_2: 13

问题: 以上代码有效。但是,有没有更好的方法来实现这一目标? 原因是,我正在使用jinja2创建一个html表,我需要为rowspan定义PRI_KEY_2,考虑其子键具有的最大键,以便表格看起来喜欢一张桌子。

顺便说一下,我的Dict有100多个PRI_KEY_*以及更多孩子的大孩子钥匙。

2 个答案:

答案 0 :(得分:1)

您可以将生成器表达式传递到max以计算此

>>> max(len(i) for i in d['PRI_KEY_2'].values())
13

答案 1 :(得分:0)

你可以使用dict理解。下面的代码将为每个主键提供rowspan值

{primary_key:(max([len(dict[primary_key][key]) for key in dict[primary_key]])) for primary_key in dict}
# Output is {'PRI_KEY_2': 13, 'PRI_KEY_1': 2}