python - 如何使用 lambda 函数在 python for 循环中捕获 KeyError?
问题描述
是否有可能为这种特定情况捕获一个KeyError
for 。x['uri']
joined_rooms = ('coala/coala', 'coala/coala-bears')
room_data = [{'id': '130', 'uri': 'coala/coala'},
{'id': '234', 'name': 'Nitanshu'},
{'id': '897', 'uri': 'coala/coala-bears'}]
for room in filter(lambda x: x['uri'] in joined_rooms, room_data):
#do stuff
这样做:
try:
for room in filter(lambda x: x['uri'] in joined_rooms, room_data):
#do stuff
except KeyError:
pass
将跳过KeyError
引发后的所有项目。
除了迁移到嵌套的经典之外,还有什么方法可以解决这个for loops
问题if condition
?
解决方案
Pythondict
有一种get
方法可以应对这种情况。它需要两个参数,第一个是您要查找的键,第二个是在字典中不存在该键时使用的默认值。尝试这个:
for room in filter(lambda x:x.get('uri',None) in joined_rooms, room_data):
#do stuff
这里的问题,虽然在您的情况下可能不是问题,但您需要提供一个永远不会出现在joined_rooms
.
推荐阅读
- php - GET 表单是否有等效的全局变量 $_FILES?
- sql - 为唯一工厂选择最近的非 Null 值的 SQL 帮助
- c# - 当我在没有给出任何值的情况下按 Enter 时,我希望返回给我第一种情况,但它给了我第二种情况
- java - 尝试在 Java 中解析日期时间“02-APR-18 09.26.21”时出现异常
- python - 随机模块方法 Python
- python - 合并两个用冒号分隔的文件
- mysql - 如何在 MYSQL 中有空值的 GROUP_CONCAT 将字段从 LEFT JOIN?
- python - 如何在 python 中修复此错误“与 MySQL 数据库的连接错误”
- python - 如何检查类方法是否返回自我?
- android - Flutter:如何实时监听权限