Словарь Python: подсчитать максимальное количество ключей для родительского ключа - PullRequest
0 голосов
/ 09 мая 2018

Вероятно, мои формулировки вопроса не совсем верны. Вот вопрос:

Код:

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

Вопрос: Над кодом работает. Однако есть ли лучший способ добиться этого? Причина в том, что я создаю html-таблицу, используя jinja2, где мне нужно определить rowspan для PRI_KEY_2, учитывая максимальное количество ключей, которые есть у его дочерних ключей, чтобы таблица выглядела как таблица .

Кстати, у My Dict 100+ PRI_KEY_* и многие другие под их дочерью, большие дочерние ключи.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Вы можете использовать диктовку. Приведенный ниже код даст значение интервала строк для каждого первичного ключа

{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}
0 голосов
/ 09 мая 2018

Вы можете передать выражение генератора в max, чтобы вычислить это

>>> max(len(i) for i in d['PRI_KEY_2'].values())
13
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...