Начиная с Python 2.7 и 3, вы должны просто использовать синтаксис понимания dict :
{key: value for (key, value) in iterable}
В Python 2.6 и более ранних версиях dict
встроенный может получать итерацию пар ключ / значение, поэтому вы можете передать ему понимание списка или выражение генератора. Например:
dict((key, func(key)) for key in keys)
Однако, если у вас уже есть итерация (и) ключей и / или значений, вам вообще не нужно использовать понимание - проще всего просто вызвать встроенный dict
напрямую:
# consumed from any iterable yielding pairs of keys/vals
dict(pairs)
# "zipped" from two separate iterables of keys/vals
dict(zip(list_of_keys, list_of_values))
Можно создать новый dict для каждой пары и объединить ее с предыдущим dict:
reduce(lambda p, q: {**p, **{q[0]: q[1]}}, bla bla bla, {})
, Очевидно, это приближается, требует reduce
от functools
.
В Python 3 и Python 2.7+ понимание словаря выглядит следующим образом:
d = {k:v for k, v in iterable}
Для Python 2.6 или более ранней версии см. ответ fortran .