首页 > 解决方案 > 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 打印给我。由于它不起作用(而且我对字典还不够了解),我想知道是否有其他方法可以做到这一点。谢谢!

标签: pythonpython-3.xdictionary

解决方案


您可以在相等的(键,值)对上合并字典,然后对合并的字典运行后续检查。

>>> 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.keysdict.valuesdict.itemsset

警告:在您的 dicts 中需要可散列的值。如果您有不可散列的值,请merged通过创建

>>> b_items = dictB.items()
>>> merged = dict(pair for pair in dictA.items() if pair in b_items)

推荐阅读