Сбор пар ключ / значение в Python 2.6 - PullRequest
2 голосов
/ 23 декабря 2010

В Python 2.7 я собирал пары ключ / значение из массива и возвращал их в виде хэша:

return { u.id : u.name for u in users }

Но оказалось, что в Python 2.6 это не работает:

return { u.id : u.name for u in users }
                             ^
SyntaxError: invalid syntax

Как мне избежать подобных действий?

values = {}

for u in users:
  values[u.id] = u.name

return values

Есть ли лучший способ?

Ответы [ 3 ]

10 голосов
/ 23 декабря 2010

Просто передайте выражение-генератор, которое создает последовательность кортежей, конструктору для dict

return dict((u.id, u.name) for u in users)

Это создаст тот же словарь, что и словарь в более поздних версиях.

1 голос
/ 23 декабря 2010

Конструктор dict принимает итерацию пар.

return dict((u.id, u.name) for u in users)
1 голос
/ 23 декабря 2010
return dict((u.id, u.name) for u in users)
...