假设我有一本字典

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() 返回字典项的顺序进行更改。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!