假设我有以下列表
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'}
