LINUX.ORG.RU

История изменений

Исправление KillTheCat, (текущая версия) :

Как-то так:

def find_all_keys(input_dict: dict) -> list:
    result = []
    for key, val in input_dict.items():
        if key.startswith('lib'):
            result.append(key)
        if isinstance(val, dict):
            result.extend(find_all_keys(val))
    return result

В 1 строчку:

def find_all_keys(input_dict: dict, sw='lib') -> list:
    return (lambda x=[]: [k for k, v in input_dict.items() if (k.startswith(sw) and x.append(k)) or (isinstance(v, dict) and x.extend(find_all_keys(v)))] or x)()

Исходная версия KillTheCat, :

Как-то так:

def find_all_keys(input_dict: dict) -> list:
    result = []
    for key, val in input_dict.items():
        if key.startswith('lib'):
            result.append(key)
        if isinstance(val, dict):
            result.extend(find_all_keys(val))
    return result

В 2 строчки:

def find_all_keys(input_dict: dict, sw='lib') -> list:
    result = []
    return [k for k, v in input_dict.items() if (k.startswith(sw) and result.append(k)) or (isinstance(v, dict) and result.extend(find_all_keys(v)))] or result