Skip to main content
 首页 » 编程设计

python之从混合列表中解包元组值

2025年05月04日20thcjp

假设我有以下列表

lst = [("key1", "2"), ("key3", "4"), "somestring", 12345] 

我想从中构建一个 dict(使用 dictcomp,即):

d = {key: value  
     for item in lst  
     for key, value in [item] 
     if isinstance(item, tuple)} 

这将因 ValueError(太多值无法解包)而爆炸。
if 子句何时被评估(当然,这对解包至关重要)?
注意:我知道我之前可以使用 filter/lambda 但想知道是否可以一步完成。

请您参考如下方法:

我认为这就是您要找的:

>>> lst = [("key1", "2"), ("key3", "4"), "somestring", 12345] 
>>> dict([i for i in lst if type(i) is tuple]) 
{'key1': '2', 'key3': '4'}