有没有办法处理 python 列表理解中的错误。最好我会有这样的东西,其中最后两个值由 None
表示:
values = [try i ["row"] except KeyError None for i in [{"row" : 1}, {"Row" : 0}, {}]]
这会引发语法错误,我能做到的唯一方法是:
values = []
for i in [{"row" : 1}, {"Row" : 0}, {}]:
try: values.append (i ["row"])
except KeyError: values.append (None)
我希望有一种更“简洁”的方法来做到这一点,因为当前的解决方案并不可取,因为当列表理解以如此好的方式做到这一点时,必须附加到空白列表!
最佳答案
您无法从列表理解中捕获异常 ( How can I handle exceptions in a list comprehension in Python? )。但考虑到你想要做什么,你可以使用 get
:
values = [i.get("row") for i in [{"row" : 1}, {"Row" : 0}, {}]]
如果在字典中找不到该键get
返回None
,正是您要查找的内容(它可以返回您想要的任何内容,只需传递默认值作为第二个参数,请参阅 Why dict.get(key) instead of dict[key]? )
关于python - Python 中列表理解的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49224363/