Метод понимания словаря не работает в Python 2.65

Я написал скрипт в среде Python 3.6, и теперь мне нужно перевести его обратно в Python 2.65. Есть одна строка кода, которую он особенно не одобряет. Я использовал словарное понимание, чтобы создать переменную. Замечания: NFHL_sx_firmpan а также Prelim_sx_firmpan это словари, которые я сравниваю, чтобы найти различия, которые "не разделяются" между ними.

 unshared = {k: NFHL_sx_firmpan[k] for k in NFHL_sx_firmpan if k not in Prelim_sx_firmpan}

Выдает ошибку синтаксиса для "для", поэтому я попытался использовать старый for цикл с условным:

 unshared = dict()
 for k in NFHL_sx_firmpan:
     if k not in Prelim_sx_firmpan:
        unshared = k: NFHL_sx_firmpan[k]

Теперь он генерирует синтаксическую ошибку на ':' после 'k', Как я могу перевести это так, чтобы оно работало в 2.65? (Примечание 2: он отлично работает Asis в 3.6)

2 ответа

Решение

Что-то мешает вам сделать следующее? Этот синтаксис должен работать в обеих версиях.

unshared = {}
for k in NFHL_sx_firmpan:
    if k not in Prelim_sx_firmpan:
        unshared[k] = NFHL_sx_firmpan[k]

Код ниже должен быть совместим с версией меньше, чем Python 2.7

unshared = dict((k, NFHL_sx_firmpan[k]) for k in NFHL_sx_firmpan if k not in Prelim_sx_firmpan)
Другие вопросы по тегам