想象一下我有以下列表
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
,但想知道是否可以一步完成。
答案 0 :(得分:4)
我认为这就是您想要的:
>>> lst = [("key1", "2"), ("key3", "4"), "somestring", 12345]
>>> dict([i for i in lst if type(i) is tuple])
{'key1': '2', 'key3': '4'}
答案 1 :(得分:1)
您还可以使用以下dictcomp:
{i[0]: i[1] for i in lst if isinstance(i, tuple)}
# {'key1': '2', 'key3': '4'}