Метод понимания словаря не работает в Python 2.65 - PullRequest
0 голосов
/ 24 октября 2018

Я написал скрипт в среде 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», поэтомуЯ попытался использовать старый цикл 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 ]

0 голосов
/ 24 октября 2018

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

unshared = dict((k, NFHL_sx_firmpan[k]) for k in NFHL_sx_firmpan if k not in Prelim_sx_firmpan)
0 голосов
/ 24 октября 2018

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

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