可能我的问题措辞不太正确。这是一个问题:
代码:
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
,考虑其子键具有的最大键,以便表格看起来喜欢一张桌子。
PRI_KEY_*
以及更多孩子的大孩子钥匙。
答案 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}