【问题标题】:How to unpack result of `zip` which might be empty?如何解压缩可能为空的“zip”结果?
【发布时间】:2020-05-29 13:25:00
【问题描述】:

我有一个元组生成器,我想像这样使用它:

def pairs():
    yield from [("key1", 2), ("key2", 4), ("key3", 6)]

keys, values = zip(*pairs())

像一个魅力一样工作,但现在pairs() 也可以不产生任何结果,从而产生相当于

的表达式
keys, values = []

是否可以强制zip 的输出在一个不错的单个表达式中具有给定的维度?

我想要的是这样的:

>>> keys, values = magic_extender(zip(*pairs()), 2)
>>> keys, values
((), ())

【问题讨论】:

标签: python python-3.x iterable-unpacking


【解决方案1】:

我的 Python 版本 (3.7)

我建议如果您使用键和值,您应该使用字典的
然后解决方法就不难了……

解决方案

def pairs():
    """
    documentation of the function.

    Returns
    -------
        dict
            The function returns dictionary...
    """
    yield {"key1": 2, "key2": 4, "key3": 6}


def main():
    pair = dict(next(pairs()))
    keys, values = list(pair.keys()), list(pair.values())
    print(keys, values)


if __name__ == '__main__':
    main()

在此解决方案中,输出将是:

['key1', 'key2', 'key3'] [2, 4, 6]

如果字典为空,则输出为:

[] []

【讨论】:

  • 如果我可以避免将元组作为故事的一部分,这将是一个不错的方法 - 在我的问题中,pairs() 只是可迭代返回元组的一个示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
  • 2010-09-06
  • 2021-10-19
  • 2016-10-13
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
相关资源
最近更新 更多