是否有可能在dictcomp
中使用else
语句(如果是,怎么办?)?if-else在词典理解中
这是不可能使用else
的理解本身的一部分(见this),但至少在list
和set
内涵,可以使用conditional_expression
(见this)。
listcomp
的示例是here。
我的示例代码:
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的问题,但我想知道为什么这不起作用。