python - Python 中列表理解的错误处理

标签 python python-3.x generator

有没有办法处理 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/

相关文章:

php - 生成密码 PHP, MySQL

python - 在 Python 中将多个值传递到生成器

python - elementtree:获取xml文档中特定标签的内容

python - 连接到 pypi.python.org 超时

python - 如何使 Python3 成为 Geany 中的默认 Python

python-3.x - 用 numpy 生成 8 位图像

python - 使用 flask reSTLess 的多对多关系,发布一对多数据

python - python 3.1 中的测试驱动开发

python - 进行异步 API 调用时如何限制 Grequests?

python - python中相同生成器的链式重复