Какой Pythonic способ объединить две последовательности в словарь? - PullRequest
7 голосов
/ 24 февраля 2009

Есть ли более краткий способ сделать это в Python?:

def toDict(keys, values):
  d = dict()
  for k,v in zip(keys, values):
    d[k] = v

  return d

Ответы [ 2 ]

42 голосов
/ 24 февраля 2009

Да

dict(zip(keys,values))
4 голосов
/ 24 февраля 2009

Если размер keys 'может быть больше, чем values', то вы можете использовать itertools.izip_longest (Python 2.6), который позволяет указать значение по умолчанию для остальных ключей:

from itertools import izip_longest

def to_dict(keys, values, default=None):
    return dict(izip_longest(keys, values, fillvalue=default))

Пример:

>>> to_dict("abcdef", range(3), 10)
{'a': 0, 'c': 2, 'b': 1, 'e': 10, 'd': 10, 'f': 10}

ПРИМЕЧАНИЕ: функции itertools.izip*() в отличие от функции zip() возвращают итераторы, а не списки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...