python - Python3:比较两个字典之间的特定键和值对
问题描述
编辑:如果它对上下文有帮助,我实际上是在尝试将其概括为在 for 和 while 循环中工作,我希望这样的东西可以工作
if dictA[certainkey:'certainvalue'] == dictB[certainkey:'certainvalue']:
return True
原始问题: 有没有办法在 Python3 中比较两个字典中的相同键以查看它们是否具有相同的值?
例如,假设
dictA = {1:'Y', 2:'E', 3:'E'}
dictB = {1:'Y', 2:'A', 3:'W'}
如果 dictA 中的一组键值对与 dictB 中的同一组键值对匹配,我希望程序返回一个 True 值。在这种情况下,键 1 与 dictA 和 dictB 中的值“Y”配对。不知道有没有好的方法可以做到这一点,自然就尝试了
print(dictA[1:'Y'] == dictB[1:'Y'])
希望能把 True 打印给我。由于它不起作用(而且我对字典还不够了解),我想知道是否有其他方法可以做到这一点。谢谢!
解决方案
您可以在相等的(键,值)对上合并字典,然后对合并的字典运行后续检查。
>>> dictA = {1:'Y', 2:'E', 3:'E'}
>>> dictB = {1:'Y', 2:'A', 3:'W'}
>>>
>>> merged = dict(dictA.items() & dictB.items())
>>> merged
{1: 'Y'}
>>>
>>> 1 in merged
True
>>> 3 in merged
False
创建是无痛的,merged
因为 , 的返回值支持关于并集、交集等操作的接口。dict.keys
dict.values
dict.items
set
警告:在您的 dicts 中需要可散列的值。如果您有不可散列的值,请merged
通过创建
>>> b_items = dictB.items()
>>> merged = dict(pair for pair in dictA.items() if pair in b_items)
推荐阅读
- javascript - LokiJS 在模块内返回空数据库
- scapy - 如何使用 Scapy 定义具有可变数量字段的数据包?
- php - 动态添加维度到 PHP 数组
- postgresql - 在哪里可以找到 PGSQL 错误代码列表?
- python-3.x - 如何从 Networkx 最短路径算法中接收完整路径
- windows - 使用批处理脚本获取文件的绝对路径
- c# - 如何为我的 Windows 窗体应用程序项目定位多个框架?
- uwp - 将文件解压缩到 UWP C++/WinRT 中的目录
- php - 如何将双循环查询转换为 PDO?
- java - 与 Maven 的 Internet 连接被阻止