首页 > 解决方案 > 从混合列表中解包元组值

问题描述

想象一下我有以下列表

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/lambdabefore 但想知道它是否可以一步完成。

标签: python

解决方案


我认为这就是您正在寻找的:

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

推荐阅读