【问题标题】: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'}

这可以按我的意愿工作,并且由于列表的长度不相等,因此元素 45 被忽略了,并且它们没有对应的值。这和预期的一样。

但是如果我想要一个值,比如 None 中的键值 l 怎么办?我希望输出是:

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

我认为的解决方案之一是遍历两者,比较它们的长度并在需要的地方附加None。我有一个同样有效的解决方案,但我想知道是否可以以更简单、更短的方式完成它?

【问题讨论】:

    标签: python dictionary iterable


    【解决方案1】:

    使用

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

    【讨论】:

    • 嘿,完美!我猜有这样的东西存在!
    • 顺便说一句:在 Python 3 上,它被称为“zip_longest”(没有前导“i”)。
    猜你喜欢
    • 2018-12-14
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2023-03-07
    相关资源
    最近更新 更多