从两个可迭代对象创建字典并同时使用它们
Posted
技术标签:
【中文标题】从两个可迭代对象创建字典并同时使用它们【英文标题】:Creating a dictionary from two iterables and consuming both of them 【发布时间】:2011-06-11 21:28:23 【问题描述】:假设我有两个列表,我想用它们制作字典。喜欢:
>>> 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】:使用
dict(itertools.izip_longest(l, x))
# 1: 'a', 2: 'b', 3: 'c', 4: None, 5: None
【讨论】:
嘿,完美!我猜有这样的东西存在! 顺便说一句:在 Python 3 上,它被称为“zip_longest”(没有前导“i”)。以上是关于从两个可迭代对象创建字典并同时使用它们的主要内容,如果未能解决你的问题,请参考以下文章