gpt4 book ai didi

Python 不能使用三元运算符在列表理解中使用解包

转载 作者:行者123 更新时间:2023-12-02 08:07:36 25 4
gpt4 key购买 nike

假设我有一本字典

kwargs = {'key1': 1, 
'key2': 2,
'key3list': [1,2,3,4]}

其中任何键的值之一可以是整数列表,而其他键可以是任何对象,在本例中为整数。我想在一行(或最多几行)中,将键的所有值放入一个元组中,解压缩所有可能的列表。请注意,根据字典 kwargs 的构造方式,具有列表的键将具有以“list”结尾的键。

我想到了以下内容:

a = tuple(
[kwargs[key] if not key.endswith('list') else *kwargs[key] for key in kwargs.keys()]
)

但是我得到的错误是我无法在此处解压 *kwargs[key]..

我该如何解决这个问题?

最佳答案

如果您不必使用列表理解,可以使用生成器:

def flat(l):
for k, v in l.items():
if type(v) == list:
for x in v:
yield x
else:
yield v

kwargs = {'key1': 1,
'key2': 2,
'key3list': [1,2,3,4]}

print(tuple(flat(kwargs)))

输出:

(1, 2, 1, 2, 3, 4)

请注意,dict 没有顺序,因此生成的元组可以根据 items() 返回字典项的顺序进行更改。

关于Python 不能使用三元运算符在列表理解中使用解包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50151504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com