如何检查字典中指定的一组键是否具有相同值?
检查字典中指定键组的值是否全部相同
给定如下字典:
my_dict = { "a": "x", "b": "x", "c": "x", "d": "y", "e": "y", "f": "y", }
需要实现快速方法,判断指定的一组键对应的所有值是否完全相同。例如:
- 传入
["a", "b", "c"]时返回True - 传入
["b", "c", "d"]时返回False
方案1:集合去重(简洁直观)
提取指定键对应的所有值,转换为集合后,若集合长度为1则说明所有值相同。可先校验所有键是否存在于字典中,避免KeyError。
def check_same_value(d, keys): # 检查所有键是否存在 if not all(key in d for key in keys): raise ValueError("部分键不存在于字典中") # 提取值并转集合去重 values = {d[key] for key in keys} return len(values) == 1
测试示例:
print(check_same_value(my_dict, ["a", "b", "c"])) # 输出 True print(check_same_value(my_dict, ["b", "c", "d"])) # 输出 False
方案2:基准值对比(高效提前终止)
以第一个键对应的值为基准,遍历剩余键的值,只要发现不相等就立即返回False,无需遍历所有键,在值不同的场景下效率更高。
def check_same_value(d, keys): if not keys: return True # 空键组的返回值可根据需求调整 # 检查基准键是否存在 if keys[0] not in d: raise ValueError(f"键 {keys[0]} 不存在于字典中") base_value = d[keys[0]] for key in keys[1:]: if key not in d: raise ValueError(f"键 {key} 不存在于字典中") if d[key] != base_value: return False return True
测试示例:
print(check_same_value(my_dict, ["a", "b", "c"])) # 输出 True print(check_same_value(my_dict, ["b", "c", "d"])) # 输出 False
注意事项
- 若允许传入空键组,需根据业务需求定义返回值(如返回
True或抛出异常) - 若无需处理键不存在的场景,可去掉键存在性检查以简化代码
内容的提问来源于stack exchange,提问作者Ipsider
相关产品推荐
相关产品推荐

