如何通过值找出两个字典中额外存在的键?
找出old_ids中值不存在于new_ids的对应键
给定两个字典:
new_ids = {10722774: 5537170, 10722775: 5537171, 10722776: 5537172, 10722777: 5537173, 10722778: 5537174, 10722779: 5537175, 10722780: 5537176, 10722781: 5537177, 10722782: 5537178} old_ids = {10722773: 5537179, 10722764: 5537170, 10722765: 5537171, 10722766: 5537172, 10722767: 5537173, 10722768: 5537174, 10722769: 5537175, 10722770: 5537176, 10722771: 5537177, 10722772: 5537178}
需要筛选出old_ids中值未出现在new_ids值集合里的键,以下是两种实现方式:
方法一:集合查询(高效推荐)
先将new_ids的所有值转为集合(集合的成员查询时间复杂度为O(1),远快于直接遍历字典值),再遍历old_ids筛选目标键:
# 提取new_ids的所有值并转为集合 new_values = set(new_ids.values()) # 筛选符合条件的键 target_keys = [key for key, val in old_ids.items() if val not in new_values] print(target_keys) # 输出: [10722773]
方法二:直接遍历判断(适合小数据量)
如果数据规模很小,也可以直接用字典的values()方法进行判断,不过这种方式每次查询都要遍历new_ids的所有值,效率较低:
target_keys = [key for key, val in old_ids.items() if val not in new_ids.values()] print(target_keys) # 输出: [10722773]
内容的提问来源于stack exchange,提问作者Chaban33
相关产品推荐
相关产品推荐

