【发布时间】:2017-09-09 11:06:28
【问题描述】:
是否可以在dictcomp 中使用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 绕过这个问题,但我想知道为什么这不起作用。
【问题讨论】:
标签: python python-3.x dictionary dict-comprehension