Условная задача в словаре. Какое условие выполняется в функции flatten? - PullRequest
0 голосов
/ 25 февраля 2020
def flatten(d, parent_key='', sep='.'):

    items = []

    for k, v in d.items():

        new_key = parent_key + sep + k if parent_key else k # questions??`

        if isinstance(v, dict):

            items.extend(flatten(v, new_key, sep=sep).items())

        else:

            items.append((new_key, v))

    return dict(items)
d = {
    'a': 1,
    'b': {
        'c': 2,
        'd': {
            'e': 3
        }
    }
}

print(flatten(d))

# prints {'a': 1, 'b.c': 2, 'b.d.e': 3}

Это функция, которая принимает вложенный дикт и превращает его в сплющенный.

Я хочу знать, что означает new_key = parent_key + sep + k if parent_key else k? На что указывает условие?

Не должно ли оно печатать {'.a': 1, '.b.c': 2, '.b.d.e': 3} как new_key = '' + '.' + K (ключ)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...