假设我有一本字典
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()
返回字典项的顺序进行更改。