2013-02-16 2 views
2

Поэтому я использовал следующий фрагмент кода как часть более крупного проекта,Различия в синтаксисе между Python 2.6.1 и 2.7.3?

with open(file) as fin: 
    rows = (line.split() for line in fin) 
    d = { row[0]:row[1:] for row in rows } 

Для ввода табуляцией, file. И он отлично работает на моей персональной машине, но когда я переношу его в общий вычислительный кластер, ему не нравится 3-я строка, d = { row[0]:row[1:] for row in rows }. Я пытался понять, почему.

Единственное, что я мог придумать, это разница в версиях Python. Я запускаю 2.7.3, а общий кластер работает 2.6.1, но это не кажется вполне разумным - я пропустил что-то совершенно очевидное? Я ценю любые советы, которые у вас есть.

Вот текст ошибки (в Python 2.6.1 на кластере),

File "Alphabet.py", line 22 
    d = { row[0]:row[1:] for row in rows } 
         ^
SyntaxError: invalid syntax 
+0

Отредактировано, текст ошибки добавлен – JamesT

ответ

6

ДИКТ понимание нового в Python 2.7 см PEP 274 http://www.python.org/dev/peps/pep-0274/

Из этого:

>>> dict([(i, chr(65+i)) for i in range(4)]) 

семантически эквивалентно

>>> {i : chr(65+i) for i in range(4)} 

Если вам нужна совместимость с Python до версии 2.7, используйте первую версию.

+0

d'oh! Вы совершенно правы. Я подумал, что это будет что-то вроде этого - я все еще совсем не люблю. Теперь он работает просто отлично - спасибо! – JamesT

Смежные вопросы