В Python 3 и Python 2.7+ понимание словаря выглядит следующим образом:
d = {k:v for k, v in iterable}
Для Python 2.6 или более ранней версии см. Ответ fortran.
Ответ 3
На самом деле, вам даже не нужно выполнять итерации по iterable, если он уже понимает какое-либо отображение, конструктор dict любезно сделает это за вас:
>>> ts = [(1, 2), (3, 4), (5, 6)] >>> dict(ts) {1: 2, 3: 4, 5: 6} >>> gen = ((i, i+1) for i inrange(1, 6, 2)) >>> gen <generator object <genexpr> at 0xb7201c5c> >>> dict(gen) {1: 2, 3: 4, 5: 6}
Ответ 4
Создайте словарь с пониманием списка на Python
Мне нравится синтаксис понимания списков в Python.
Можно ли использовать его и для создания словарей? Например, путем перебора пар ключей и значений:
mydict = {(k,v) for (k,v) in blah blah blah}
Вы ищете фразу "dict comprehension" - на самом деле это:
mydict = {k: v for k, v in iterable}
Предполагая, что blah blah blah является итерацией двух кортежей - вы очень близки к этому. Давайте создадим несколько подобных "бредней".:
Теперь синтаксис здесь является частью сопоставления. Что делает это dict пониманием вместо set понимания (которое приблизительно соответствует вашему псевдокоду), так это двоеточие, : как показано ниже:
mydict = {k: v for k, v in blahs}
И мы видим, что это сработало, и должен сохраниться порядок вставки, как в Python 3.7: