python - 如何检查字典中是否存在一个值,该值是否在另一个字典的列表中?
问题描述
我有一个包含多个键和值的字典,其中一个包含更多字典的列表。我需要能够找到给定值是否存在于这些字典中,但是当它们不仅存在于列表中,而且存在于对象属性中时,我不确定如何检查它们。
虽然 for 循环检查可以完成此操作,但该属性最终可能会保存数百个值,这将使这种方法效率低下。
我还尝试了以下变体:
if <value> in <dict>[<list>][<dict2>]
但是,我不断收到 TypeErrors 列表索引必须是整数或切片(值是字符串)。
代码示例如下:
dictExample = {
"name": "yes",
"age": 25,
"Check_Me": [
{"type": "code", "value": "001"},
{"type": "code", "value": "002"},
{"type": "code", "value": "003"},
{"type": "code", "value": "004"},
{"type": "code", "value": "005"}
],
}
if "007" not in dictExample["Check_Me"]["value"]:
print("It works!")
else:
print("Failure...")
(我无法上传实际代码,但这大致就是我所面临的。)
预期的输出是代码运行没有错误,并且能够成功地找到该值是否在嵌套字典中。
解决方案
一个例子是使用内置的any函数,该函数在找到第一个匹配项时会短路。但是有几种选择
if not any("007" in x["value"] for x in dictExample["Check_Me"]):
print("It works!")
推荐阅读
- protractor - Allure JS protractor-cucumber-framework cucumberOpts - 不止一个格式化程序
- swift - Swift - 在初始化程序中调用函数并在外部定义它
- angular - 阻止用户或管理员使用 rest api 的最佳实践
- postgresql - java.lang.ClassCastException:java.lang.Integer 不能转换为 java.math.BigDecimal
- c++ - 对几乎相同的代码执行不同的向量求和
- r - 删除多列的部分列名
- java - 在Java中将大写字母排在小写字母之前
- react-native - 如何在本机反应中创建全屏 ImageBackground?
- sql - Postgresql:如何在十进制小时内找到两个日期和时间之间的差异?
- javascript - 使用 svg2png npm 库时出现 ERR_INVALID_ARG_TYPE' 错误