Рекурсивный вызов функции. Повторный запуск "помнит" значения

Есть несколько словарей. Нужно перебирая по словарь final_list_LN или final_list_matches_AM подтягивать из словарей list_sheet_param_val и list_sheet_param соответствующие значения ключей и формировать списки.

Попытался реализовать при помощи рекусрии. Получается то что нужно, но только если вызвать функцию один раз. Но почему то в списках присутствуют дубликаты, кототрые удаляю другой функцией (def f(l)). "do" - результат работы рекурсии "posle" - результат удаление дубликатов в "do":

do = [['LN', [u'420013/420013/21/LN-2', u'420013/420013/22/LN-2', u'420013/420013/23/LN-2'], {u'LN_param_4': u'2600_10_to_1800_15_7', u'LN_param_3': u'2600_10_to_1800_15_6', u'LN_param_2': u'2600_10_to_1800_15_5', u'LN_param_1': u'2600_10_to_1800_15_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']], ['LN', [u'420013/420013/21/LN-1', u'420013/420013/22/LN-1', u'420013/420013/23/LN-1'], {u'LN_param_4': u'2600_10_to_800_5_7', u'LN_param_3': u'2600_10_to_800_5_6', u'LN_param_2': u'2600_10_to_800_5_5', u'LN_param_1': u'2600_10_to_800_5_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']], ['LN', [u'310007/310007/21/LN-1', u'310007/310007/21/LN-2', u'310007/310007/23/LN-2', u'310007/310007/23/LN-1', u'310007/310007/22/LN-2', u'310007/310007/22/LN-1'], {u'LN_param_4': u'2600_10_to_1800_10_7', u'LN_param_3': u'2600_10_to_1800_10_6', u'LN_param_2': u'2600_10_to_1800_10_5', u'LN_param_1': u'2600_10_to_1800_10_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']], ['LN', [u'420013/420013/21/LN-2', u'420013/420013/22/LN-2', u'420013/420013/23/LN-2'], {u'LN_param_4': u'2600_10_to_1800_15_7', u'LN_param_3': u'2600_10_to_1800_15_6', u'LN_param_2': u'2600_10_to_1800_15_5', u'LN_param_1': u'2600_10_to_1800_15_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']]]
posle = [['LN', [u'420013/420013/21/LN-2', u'420013/420013/22/LN-2', u'420013/420013/23/LN-2'], {u'LN_param_4': u'2600_10_to_1800_15_7', u'LN_param_3': u'2600_10_to_1800_15_6', u'LN_param_2': u'2600_10_to_1800_15_5', u'LN_param_1': u'2600_10_to_1800_15_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']], ['LN', [u'420013/420013/21/LN-1', u'420013/420013/22/LN-1', u'420013/420013/23/LN-1'], {u'LN_param_4': u'2600_10_to_800_5_7', u'LN_param_3': u'2600_10_to_800_5_6', u'LN_param_2': u'2600_10_to_800_5_5', u'LN_param_1': u'2600_10_to_800_5_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']], ['LN', [u'310007/310007/21/LN-1', u'310007/310007/21/LN-2', u'310007/310007/23/LN-2', u'310007/310007/23/LN-1', u'310007/310007/22/LN-2', u'310007/310007/22/LN-1'], {u'LN_param_4': u'2600_10_to_1800_10_7', u'LN_param_3': u'2600_10_to_1800_10_6', u'LN_param_2': u'2600_10_to_1800_10_5', u'LN_param_1': u'2600_10_to_1800_10_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']]]

Все последующие вызовы создают списки которые "помнят" предыдущие:

    do = [['LN', [u'420013/420013/21/LN-2', u'420013/420013/22/LN-2', u'420013/420013/23/LN-2'], {u'LN_param_4': u'2600_10_to_1800_15_7', u'LN_param_3': u'2600_10_to_1800_15_6', u'LN_param_2': u'2600_10_to_1800_15_5', u'LN_param_1': u'2600_10_to_1800_15_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], 'AM', [u'420013/420013/22/AM-0', u'420013/420013/21/AM-0', u'420013/420013/23/AM-0'], {u'AM_param_3': u'2600_10_to_1800_15_3', u'AM_param_2': u'2600_10_to_1800_15_2', u'AM_param_1': u'2600_10_to_1800_15_1'}, [u'AM_param_3', u'AM_param_2', u'AM_param_1']], ['LN', [u'420013/420013/21/LN-1', u'420013/420013/22/LN-1', u'420013/420013/23/LN-1'], {u'LN_param_4': u'2600_10_to_800_5_7', u'LN_param_3': u'2600_10_to_800_5_6', u'LN_param_2': u'2600_10_to_800_5_5', u'LN_param_1': u'2600_10_to_800_5_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']], ['LN', [u'310007/310007/21/LN-1', u'310007/310007/21/LN-2', u'310007/310007/23/LN-2', u'310007/310007/23/LN-1', u'310007/310007/22/LN-2', u'310007/310007/22/LN-1'], {u'LN_param_4': u'2600_10_to_1800_10_7', u'LN_param_3': u'2600_10_to_1800_10_6', u'LN_param_2': u'2600_10_to_1800_10_5', u'LN_param_1': u'2600_10_to_1800_10_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']], ['LN', [u'420013/420013/21/LN-2', u'420013/420013/22/LN-2', u'420013/420013/23/LN-2'], {u'LN_param_4': u'2600_10_to_1800_15_7', u'LN_param_3': u'2600_10_to_1800_15_6', u'LN_param_2': u'2600_10_to_1800_15_5', u'LN_param_1': u'2600_10_to_1800_15_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], 'AM', [u'420013/420013/22/AM-0', u'420013/420013/21/AM-0', u'420013/420013/23/AM-0'], {u'AM_param_3': u'2600_10_to_1800_15_3', u'AM_param_2': u'2600_10_to_1800_15_2', u'AM_param_1': u'2600_10_to_1800_15_1'}, [u'AM_param_3', u'AM_param_2', u'AM_param_1']], ['LN', [u'420013/420013/21/LN-2', u'420013/420013/22/LN-2', u'420013/420013/23/LN-2'], {u'LN_param_4': u'2600_10_to_1800_15_7', u'LN_param_3': u'2600_10_to_1800_15_6', u'LN_param_2': u'2600_10_to_1800_15_5', u'LN_param_1': u'2600_10_to_1800_15_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], 'AM', [u'420013/420013/22/AM-0', u'420013/420013/21/AM-0', u'420013/420013/23/AM-0'], {u'AM_param_3': u'2600_10_to_1800_15_3', u'AM_param_2': u'2600_10_to_1800_15_2', u'AM_param_1': u'2600_10_to_1800_15_1'}, [u'AM_param_3', u'AM_param_2', u'AM_param_1']], ['AM', [u'310007/310007/22/AM-0', u'310007/310007/21/AM-0', u'310007/310007/23/AM-0'], {u'AM_param_3': u'2600_10_to_1800_10_3', u'AM_param_2': u'2600_10_to_1800_10_2', u'AM_param_1': u'2600_10_to_1800_10_1'}, [u'AM_param_3', u'AM_param_2', u'AM_param_1']], ['LN', [u'420013/420013/21/LN-2', u'420013/420013/22/LN-2', u'420013/420013/23/LN-2'], {u'LN_param_4': u'2600_10_to_1800_15_7', u'LN_param_3': u'2600_10_to_1800_15_6', u'LN_param_2': u'2600_10_to_1800_15_5', u'LN_param_1': u'2600_10_to_1800_15_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], 'AM', [u'420013/420013/22/AM-0', u'420013/420013/21/AM-0', u'420013/420013/23/AM-0'], {u'AM_param_3': u'2600_10_to_1800_15_3', u'AM_param_2': u'2600_10_to_1800_15_2', u'AM_param_1': u'2600_10_to_1800_15_1'}, [u'AM_param_3', u'AM_param_2', u'AM_param_1']]]
posle = [['LN', [u'420013/420013/21/LN-2', u'420013/420013/22/LN-2', u'420013/420013/23/LN-2'], {u'LN_param_4': u'2600_10_to_1800_15_7', u'LN_param_3': u'2600_10_to_1800_15_6', u'LN_param_2': u'2600_10_to_1800_15_5', u'LN_param_1': u'2600_10_to_1800_15_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], 'AM', [u'420013/420013/22/AM-0', u'420013/420013/21/AM-0', u'420013/420013/23/AM-0'], {u'AM_param_3': u'2600_10_to_1800_15_3', u'AM_param_2': u'2600_10_to_1800_15_2', u'AM_param_1': u'2600_10_to_1800_15_1'}, [u'AM_param_3', u'AM_param_2', u'AM_param_1']], ['LN', [u'420013/420013/21/LN-1', u'420013/420013/22/LN-1', u'420013/420013/23/LN-1'], {u'LN_param_4': u'2600_10_to_800_5_7', u'LN_param_3': u'2600_10_to_800_5_6', u'LN_param_2': u'2600_10_to_800_5_5', u'LN_param_1': u'2600_10_to_800_5_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']], ['LN', [u'310007/310007/21/LN-1', u'310007/310007/21/LN-2', u'310007/310007/23/LN-2', u'310007/310007/23/LN-1', u'310007/310007/22/LN-2', u'310007/310007/22/LN-1'], {u'LN_param_4': u'2600_10_to_1800_10_7', u'LN_param_3': u'2600_10_to_1800_10_6', u'LN_param_2': u'2600_10_to_1800_10_5', u'LN_param_1': u'2600_10_to_1800_10_4'}, [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1']], ['AM', [u'310007/310007/22/AM-0', u'310007/310007/21/AM-0', u'310007/310007/23/AM-0'], {u'AM_param_3': u'2600_10_to_1800_10_3', u'AM_param_2': u'2600_10_to_1800_10_2', u'AM_param_1': u'2600_10_to_1800_10_1'}, [u'AM_param_3', u'AM_param_2', u'AM_param_1']]]

Собсвенно код который всё это делает.

final_list_LN = {'1800_15': {'2600_10': {'LN': [u'420013/420013/11/LN-2', u'420013/420013/12/LN-2', u'420013/420013/13/LN-2']}, '800_5': {'LN': [u'420013/420013/11/LN-1', u'420013/420013/12/LN-1', u'420013/420013/13/LN-1']}}, '2600_10': {'1800_15': {'LN': [u'420013/420013/21/LN-2', u'420013/420013/22/LN-2', u'420013/420013/23/LN-2']}, '800_5': {'LN': [u'420013/420013/21/LN-1', u'420013/420013/22/LN-1', u'420013/420013/23/LN-1']}, '1800_10': {'LN': [u'310007/310007/21/LN-1', u'310007/310007/21/LN-2', u'310007/310007/23/LN-2', u'310007/310007/23/LN-1', u'310007/310007/22/LN-2', u'310007/310007/22/LN-1']}}, '1800_10': {'2600_10': {'LN': [u'310007/310007/11/LN-5', u'310007/310007/14/LN-5', u'310007/310007/16/LN-5', u'310007/310007/13/LN-5', u'310007/310007/15/LN-5', u'310007/310007/12/LN-5']}, '1800_10': {'LN': [u'310007/310007/11/LN-1', u'310007/310007/14/LN-1', u'310007/310007/16/LN-1', u'310007/310007/13/LN-1', u'310007/310007/15/LN-1', u'310007/310007/12/LN-1']}}, '800_5': {'1800_15': {'LN': [u'420013/420013/81/LN-1', u'420013/420013/82/LN-1', u'420013/420013/83/LN-1']}, '2600_10': {'LN': [u'420013/420013/81/LN-2', u'420013/420013/82/LN-2', u'420013/420013/83/LN-2']}}}
final_list_matches_AM = {'1800_15': {'2600_10': {'AM': [u'420013/420013/12/AM-0', u'420013/420013/11/AM-0', u'420013/420013/13/AM-0']}}, '2600_10': {'1800_15': {'AM': [u'420013/420013/22/AM-0', u'420013/420013/21/AM-0', u'420013/420013/23/AM-0']}, '1800_10': {'AM': [u'310007/310007/22/AM-0', u'310007/310007/21/AM-0', u'310007/310007/23/AM-0']}}, '1800_10': {'2600_10': {'AM': [u'310007/310007/15/AM-0', u'310007/310007/14/AM-0', u'310007/310007/16/AM-0']}}}


list_sheet_param_val = {u'2100_10': {u'1800_5': {u'LN': {u'LN_param_4': u'2100_10_to_1800_5_7', u'LN_param_3': u'2100_10_to_1800_5_6', u'LN_param_2': u'2100_10_to_1800_5_5', u'LN_param_1': u'2100_10_to_1800_5_4'}, u'AM': {u'AM_param_3': u'2100_10_to_1800_5_3', u'AM_param_2': u'2100_10_to_1800_5_2', u'AM_param_1': u'2100_10_to_1800_5_1'}}, u'2100_10': {u'LN': {u'LN_param_4': u'2100_10_to_2100_10_7', u'LN_param_3': u'2100_10_to_2100_10_6', u'LN_param_2': u'2100_10_to_2100_10_5', u'LN_param_1': u'2100_10_to_2100_10_4'}, u'AM': {u'AM_param_3': u'2100_10_to_2100_10_3', u'AM_param_2': u'2100_10_to_2100_10_2', u'AM_param_1': u'2100_10_to_2100_10_1'}}, u'2600_10': {u'LN': {u'LN_param_4': u'2100_10_to_2600_10_7', u'LN_param_3': u'2100_10_to_2600_10_6', u'LN_param_2': u'2100_10_to_2600_10_5', u'LN_param_1': u'2100_10_to_2600_10_4'}, u'AM': {u'AM_param_3': u'2100_10_to_2600_10_3', u'AM_param_2': u'2100_10_to_2600_10_2', u'AM_param_1': u'2100_10_to_2600_10_1'}}, u'800_5': {u'LN': {u'LN_param_4': u'2100_10_to_800_5_7', u'LN_param_3': u'2100_10_to_800_5_6', u'LN_param_2': u'2100_10_to_800_5_5', u'LN_param_1': u'2100_10_to_800_5_4'}, u'AM': {u'AM_param_3': u'2100_10_to_800_5_3', u'AM_param_2': u'2100_10_to_800_5_2', u'AM_param_1': u'2100_10_to_800_5_1'}}, u'1800_20': {u'LN': {u'LN_param_4': u'2100_10_to_1800_20_7', u'LN_param_3': u'2100_10_to_1800_20_6', u'LN_param_2': u'2100_10_to_1800_20_5', u'LN_param_1': u'2100_10_to_1800_20_4'}, u'AM': {u'AM_param_3': u'2100_10_to_1800_20_3', u'AM_param_2': u'2100_10_to_1800_20_2', u'AM_param_1': u'2100_10_to_1800_20_1'}}, u'1800_15': {u'LN': {u'LN_param_4': u'2100_10_to_1800_15_7', u'LN_param_3': u'2100_10_to_1800_15_6', u'LN_param_2': u'2100_10_to_1800_15_5', u'LN_param_1': u'2100_10_to_1800_15_4'}, u'AM': {u'AM_param_3': u'2100_10_to_1800_15_3', u'AM_param_2': u'2100_10_to_1800_15_2', u'AM_param_1': u'2100_10_to_1800_15_1'}}, u'1800_10': {u'LN': {u'LN_param_4': u'2100_10_to_1800_10_7', u'LN_param_3': u'2100_10_to_1800_10_6', u'LN_param_2': u'2100_10_to_1800_10_5', u'LN_param_1': u'2100_10_to_1800_10_4'}, u'AM': {u'AM_param_3': u'2100_10_to_1800_10_3', u'AM_param_2': u'2100_10_to_1800_10_2', u'AM_param_1': u'2100_10_to_1800_10_1'}}}, u'2600_10': {u'1800_5': {u'LN': {u'LN_param_4': u'2600_10_to_1800_5_7', u'LN_param_3': u'2600_10_to_1800_5_6', u'LN_param_2': u'2600_10_to_1800_5_5', u'LN_param_1': u'2600_10_to_1800_5_4'}, u'AM': {u'AM_param_3': u'2600_10_to_1800_5_3', u'AM_param_2': u'2600_10_to_1800_5_2', u'AM_param_1': u'2600_10_to_1800_5_1'}}, u'2100_10': {u'LN': {u'LN_param_4': u'2600_10_to_2100_10_7', u'LN_param_3': u'2600_10_to_2100_10_6', u'LN_param_2': u'2600_10_to_2100_10_5', u'LN_param_1': u'2600_10_to_2100_10_4'}, u'AM': {u'AM_param_3': u'2600_10_to_2100_10_3', u'AM_param_2': u'2600_10_to_2100_10_2', u'AM_param_1': u'2600_10_to_2100_10_1'}}, u'2600_10': {u'LN': {u'LN_param_4': u'2600_10_to_2600_10_7', u'LN_param_3': u'2600_10_to_2600_10_6', u'LN_param_2': u'2600_10_to_2600_10_5', u'LN_param_1': u'2600_10_to_2600_10_4'}, u'AM': {u'AM_param_3': u'2600_10_to_2600_10_3', u'AM_param_2': u'2600_10_to_2600_10_2', u'AM_param_1': u'2600_10_to_2600_10_1'}}, u'800_5': {u'LN': {u'LN_param_4': u'2600_10_to_800_5_7', u'LN_param_3': u'2600_10_to_800_5_6', u'LN_param_2': u'2600_10_to_800_5_5', u'LN_param_1': u'2600_10_to_800_5_4'}, u'AM': {u'AM_param_3': u'2600_10_to_800_5_3', u'AM_param_2': u'2600_10_to_800_5_2', u'AM_param_1': u'2600_10_to_800_5_1'}}, u'1800_20': {u'LN': {u'LN_param_4': u'2600_10_to_1800_20_7', u'LN_param_3': u'2600_10_to_1800_20_6', u'LN_param_2': u'2600_10_to_1800_20_5', u'LN_param_1': u'2600_10_to_1800_20_4'}, u'AM': {u'AM_param_3': u'2600_10_to_1800_20_3', u'AM_param_2': u'2600_10_to_1800_20_2', u'AM_param_1': u'2600_10_to_1800_20_1'}}, u'1800_15': {u'LN': {u'LN_param_4': u'2600_10_to_1800_15_7', u'LN_param_3': u'2600_10_to_1800_15_6', u'LN_param_2': u'2600_10_to_1800_15_5', u'LN_param_1': u'2600_10_to_1800_15_4'}, u'AM': {u'AM_param_3': u'2600_10_to_1800_15_3', u'AM_param_2': u'2600_10_to_1800_15_2', u'AM_param_1': u'2600_10_to_1800_15_1'}}, u'1800_10': {u'LN': {u'LN_param_4': u'2600_10_to_1800_10_7', u'LN_param_3': u'2600_10_to_1800_10_6', u'LN_param_2': u'2600_10_to_1800_10_5', u'LN_param_1': u'2600_10_to_1800_10_4'}, u'AM': {u'AM_param_3': u'2600_10_to_1800_10_3', u'AM_param_2': u'2600_10_to_1800_10_2', u'AM_param_1': u'2600_10_to_1800_10_1'}}}, u'Parameters': {u'LC': {u'LC_param_2': u'val_2', u'LC_param_3': u'val_3', u'LC_param_1': u'val_1', u'LC_param_4': u'val_4', u'LC_param_5': u'val_5'}}}
list_sheet_param = {u'2100_10': {u'1800_5': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'2100_10': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'2600_10': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'800_5': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'1800_20': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'1800_15': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'1800_10': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}}, u'2600_10': {u'1800_5': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'2100_10': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'2600_10': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'800_5': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'1800_20': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'1800_15': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}, u'1800_10': {u'LN': [u'LN_param_4', u'LN_param_3', u'LN_param_2', u'LN_param_1'], u'AM': [u'AM_param_3', u'AM_param_2', u'AM_param_1']}}, u'Parameters': {u'LC': [u'LC_param_2', u'LC_param_3', u'LC_param_1', u'LC_param_4', u'LC_param_5']}}



def get_pair(pri_dict, list_param_val, list_param, spisok=[], result=[]):

    if isinstance(pri_dict, dict):
        for key_prim, val_prim in pri_dict.items():
            if isinstance(val_prim, dict):
                key_prim_param_val = list_param_val.get(key_prim,None)
                key_prim_param = list_param.get(key_prim)
                if key_prim_param_val is None or key_prim_param is None:
                    print "ALARMA"
                    continue
                get_pair(val_prim, key_prim_param_val, key_prim_param, spisok=spisok)
                result.append(spisok)
                spisok =[]
            else:
                key_prim_param_val = list_param_val.get(key_prim)
                key_prim_param = list_param.get(key_prim)
                spisok.append(key_prim)
                spisok.append(val_prim)
                spisok.append(key_prim_param_val)
                spisok.append(key_prim_param)
                # result.append(spisok)
                return result
    else:
        print ("STOP")

    return result

def f(l):
    n = []
    for i in l:
        if i not in n:
            n.append(i)
    return n


c = get_pair(final_list_LN, list_sheet_param_val, list_sheet_param)
print "do = {}".format(c)
print ("posle = {}".format(f(c)))

d = get_pair(final_list_matches_AM, list_sheet_param_val, list_sheet_param)
print "do = {}".format(d)
print ("posle = {}".format(f(d)))

Почему функция помнит прошлые значения? как от этого избавиться?


Ответы (1 шт):

Автор решения: Евгений Неупокоев

решение найдено: Добавил проверку на None по совету insolor (В чем отличие двух функций?). Дополнительно добавил проверку res != result. Без этой проверки в финальный список result добавлялся элемент с бесконечным список элементов.

def get_pair(pri_dict, list_param_val, list_param, result = None):

    if result is None:
        result = []

    if isinstance(pri_dict, dict):
        for key_prim, val_prim in pri_dict.items():
            if isinstance(val_prim, dict):
                key_prim_param_val = list_param_val.get(key_prim)
                key_prim_param = list_param.get(key_prim)
                if key_prim_param_val is None or key_prim_param is None:
                    print "ALARM"
                    continue
                res = get_pair(val_prim, key_prim_param_val, key_prim_param, result)
                if res != result:
                    result.append(res)
            else:
                spisok =[]
                key_prim_param_val = list_param_val.get(key_prim)
                key_prim_param = list_param.get(key_prim)
                spisok.append(key_prim)
                spisok.append(val_prim)
                spisok.append(key_prim_param_val)
                spisok.append(key_prim_param)
                print "spisok = {}".format(spisok)

                return spisok
    else:
        print ("STOP")
    print "result = {}".format(result)
    return result
→ Ссылка