Метод понимания словаря не работает в 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)