python - 如果键可以为无,则使用理解过滤字典列表?
问题描述
我想使用列表理解过滤字典列表。
既然有可能arg1
或arg2
将会有None
,有没有更好的方法来编写这段代码,所以我不必is None
在执行列表理解之前先检查 if 变量?
a = list of dictionaries
if arg1 is None and arg2 is None:
result = a
elif arg1 is not None and arg2 is not None:
result = [d for d in a if d['key1'] == arg1 and d['key2'] == arg2]
elif arg1 is not None and arg2 is None:
result = [d for d in a if d['key1'] == arg1]
elif arg1 is None and arg2 is not None:
result = [d for d in a if d['key2'] == arg2]
解决方案
您可以检查is None
作为理解的一部分。这应该涵盖上述所有四种情况:
result = [d for d in a if (arg1 is None or arg1 == d['key1']) and (arg2 is None or arg2 == d['key2'])]
推荐阅读
- java - 测试具有 2 个事务的方法
- mysql - 从 csv 文件生成 UPDATE SQL 语句
- excel - 如何从非静态选项卡引用中进行 Vlookup?
- tensorflow - 默认情况下,TensorFlow 是同时使用 GPU/CPU 进行计算还是仅使用 GPU?
- c - 函数计算结果错误答案
- javascript - 从javascript为隐藏字段赋值
- python - Python 类字符串类型参数显示为浮点类型
- spring-boot - 如何在 Spring Boot 中运行应用程序期间切换数据库源存储库
- javascript - react app如何实时更新数据
- c++ - 没有参数列表的模板名称“事件”的无效使用,模板问题