我试图比较两个字典,期望结果是一个KeyError,用于识别丢失的密钥.

这就是我目前拥有的:

d1 = {'lion': 10.0}
d2 = {'lion': 10, 'tiger': 3}

def calc_test(d1, d2):
    if set(d2) <= set(d1) == True:
        pass
    else:
        raise KeyError(set(d2))

 
calc_test(d1,d2)

如果运行此命令,它将给出整个字典的输出:

KeyError:{'lion','tiger'}

我想要的是一个只显示缺失键的输出:

KeyError:{'tiger'}

推荐答案

试试difference:

d1 = {'lion': 10.0}
d2 = {'lion': 10, 'tiger': 3}

def calc_test(d1, d2):
    if set(d2) <= set(d1) == True:
        pass
    else:
        raise KeyError(set(d2).difference(set(d1)))

 
calc_test(d1,d2)

Python相关问答推荐

从dict的列中分钟

在Python中管理打开对话框

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

计算每个IP的平均值

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

将pandas导出到CSV数据,但在此之前,将日期按最小到最大排序

在嵌套span下的span中擦除信息

旋转多边形而不改变内部空间关系

如何使用OpenGL使球体遵循Python中的八样路径?

OpenCV轮廓.很难找到给定图像的所需轮廓

需要帮助使用Python中的Google的People API更新联系人的多个字段'

当HTTP 201响应包含 Big Data 的POST请求时,应该是什么?  

pytest、xdist和共享生成的文件依赖项

查找查找表中存在的列值组合

正在try 让Python读取特定的CSV文件

使用pythonminidom过滤XML文件

如何让PYTHON上的Selify连接到现有的Firefox实例-我无法连接到Marionette端口

如何将参数名作为参数传入到函数中?

使用BeautifulSoap库从Web获取表格时没有响应

在忽略on列中的重复值的同时连接polars重命名