Создание словаря на python 2.7 работает правильно, но не работает на 2.6

Рейтинг: 0Ответов: 1Опубликовано: 30.04.2015

Есть список имён файлов. Пытаюсь создать словарь на его основе, чтобы ключ был временем создания файла, а значение - именем файла.

import os

AllFileFull = ['file1.txt', 'file2.txt']

DictTimeFull = {os.path.getmtime(file_name):file_name 
                  for file_name in AllFileFull}

При запуске скрипта интерпретатор находит синтаксическую ошибку, хотя в IDE на python 2.7.5 ошибок нет и код выполняется.

# python test-script.py
  File "test-script.py", line 5
    DictTimeFull = {os.path.getmtime(file_name):file_name 
                      for file_name in AllFileFull}
                      ^
SyntaxError: invalid syntax

Вопрос - как переписать это место?

Ответы

▲ 4Принят

Dictionary comprehensinons (конструкции вида {x.key:x.value for x in iterable}, позволяющие лаконично создавать и заплолнять словари) были введены в Pyhton 2.7 для того, чтобы разработчики могли начать портирование кода на Python 3. В Python 2.6 такие конструкции не поддерживаются. Аналогом может служить цикл, заполняющий словарь:

DictTimeFull = {}
for file_name in AllFileFull:
    DictTimeFull[os.path.getmtime(file_name)] = file_name