如何解压缩可能为空的`zip`结果?

问题描述 投票:0回答:1

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

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个回答
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]

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

[] []
© www.soinside.com 2019 - 2024. All rights reserved.