Создание словаря из двух итераций и использование их обоих - PullRequest
3 голосов
/ 19 января 2011

Предположим, у меня есть два списка, и я хочу сделать из них словарь.Например:

>>> l = [1, 2, 3, 4, 5]
>>> x = ['a', 'b', 'c']
>>> dict(zip(l, x))
{1: 'a', 2: 'b', 3: 'c'}

Это работает так, как я хотел бы, и поскольку списки не имеют одинаковую длину, элементы 4 и 5 опущены, и для них нет соответствующих значений,Как и ожидалось.

Но что, если я хочу получить значение, скажем None для ключей в l?Я хотел бы, чтобы выходные данные были:

{1: 'a', 2: 'b', 3: 'c', 4: None, 5: None}

Одним из решений, которое я думал, было перебрать оба, сравнить их длины и добавить None, где это необходимо.У меня есть решение, которое также работает, но мне было интересно, может ли оно быть сделано намного проще и короче, возможно?

1 Ответ

12 голосов
/ 19 января 2011

Использование

dict(itertools.izip_longest(l, x))
# {1: 'a', 2: 'b', 3: 'c', 4: None, 5: None}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...