python - 如何检查对象是在键上还是在字典的值上?
问题描述
我试图了解检查对象是否在字典的键或字典的值中的最简单方法是什么。我试过使用.items()
但没有结果。
现在我正在使用这个解决方案,但我想知道是否有更好的解决方案:
zdict = { 'a':1,'b':2,'c':3}
print(list(zdict.values()) + list(zdict.keys()))
'b' in list(zdict.values()) + list(zdict.keys())
解决方案
停止从andlist
返回的视图中不必要地创建对象。要检查一个对象是否是字典键,您只需使用, 来检查它是否在值中,您可以使用,因此将两者结合起来:.keys
.values
some_object in some_dict
some_object in some_dict.values()
some_object in some_dict or some_obect in some_dict.values()
这基本上将是一个完全线性的操作,但检查它是否在键中是恒定时间的,它是一个哈希查找,所以你应该首先检查它以利用短路行为。请注意,如果您使用list
键,那么您将强制进行线性搜索。
推荐阅读
- spring-boot - 使用 github 使用 Docker 将 Spring Boot 应用程序部署到 Heroku
- c# - 每当我使用 Windows 服务打开某个程序时,如何保存在日志中?
- docker - NiFi:此 NiFi 不支持 Kerberos 票证登录
- r - R错误将列从字符转换为日期时间
- javascript - 动画字母故障 CSS
- python-3.x - ValueError:与块值的无效广播比较-pythonic方式的pandas
- sql - 根据结束日期和记录数的条件在 SQL 中计算平均值
- java - XMLUnit-2 使用 `withNodeMatcher` API 失败,用于 List 的随机顺序
- python - 缓存结果似乎比重新计算结果慢
- r - 如何根据某些变量绘制条形图的条件彩色轮廓?