Создать словарь с пониманием списка

Мне нравится синтаксис понимания списка Python.

Можно ли его использовать и для создания словарей? Например, путем перебора пар ключей и значений:

mydict = {(k,v) for (k,v) in blah blah blah}  # doesn't work
1177
задан Georgy 5 July 2019 в 20:08
поделиться

3 ответа

Начиная с 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))
1829
ответ дан 19 December 2019 в 20:16
поделиться

Можно создать новый dict для каждой пары и объединить ее с предыдущим dict:

reduce(lambda p, q: {**p, **{q[0]: q[1]}}, bla bla bla, {})

, Очевидно, это приближается, требует reduce от functools.

0
ответ дан 19 December 2019 в 20:16
поделиться

В Python 3 и Python 2.7+ понимание словаря выглядит следующим образом:

d = {k:v for k, v in iterable}

Для Python 2.6 или более ранней версии см. ответ fortran .

230
ответ дан 19 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: