在
dictcomp
中是否可以使用 else
语句?如果可以,怎样使用?根据 官方文档 的说明,无法在推导式本身中使用 else
语句,但是至少在 list
和 set
推导式中可以使用 conditional_expression
,具体细节请参见这里。关于 listcomp
的示例请看这里。以下是我的示例代码:converters = {"id": int}
rows = [{"id": "1", "name": "foo"}, {"id": "2", "name": "bar"}]
for row in rows:
row = {k: converters[k](v) if k in converters else k:v for k,v in row.items()}
print(row)
这样不行。
奇怪的是,row = {k: converters[k](v) if k in converters for k, v in row.items()}
也不行,虽然应该没问题。
row = {k: converters[k](v) for k, v in row.items() if k in converters}
可以工作,但这不是我想要的结果。
row = {k: converters[k](v) for k, v in row.items() if k in converters else k:v}
不应该工作,正如我上面指出的那样。
我知道我可以通过使用两个 dictcomps 来绕过这个问题,但我想知道为什么这样不行。