从两个iterables创建一个字典并消耗它们

时间:2011-01-19 16:31:09

标签: python dictionary iterable

假设我有两个列表,我想从中创建一个字典。像:

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

这是我想要的,因为列表长度不相等,所以省略了45元素,并且它们没有相应的值。这是预期的。

但是,如果我想要一个值,请Nonel中的密钥说明怎么办?我希望输出为:

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

我认为其中一个解决方案是迭代两者,比较它们的长度并在需要的地方附加None。我有一个可行的解决方案,但我想知道它是否可以以更容易和更短的方式完成?

1 个答案:

答案 0 :(得分:12)

使用

dict(itertools.izip_longest(l, x))
# {1: 'a', 2: 'b', 3: 'c', 4: None, 5: None}