MST

星途 面试题库

面试题:Python布尔表达式在复杂逻辑场景下的运用

给定两个字典 `dict1 = {'a': 1, 'b': 2, 'c': 3}` 和 `dict2 = {'b': 2, 'c': 4, 'd': 5}`,编写一个函数,使用布尔表达式判断 `dict1` 中的所有键值对是否都存在于 `dict2` 中,且对应的值满足 `dict1[key] <= dict2[key]`。返回布尔值,并说明如何优化代码以提高效率。
36.3万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
def check_dicts(dict1, dict2):
    for key, value in dict1.items():
        if key not in dict2 or value > dict2[key]:
            return False
    return True

优化思路

  1. 提前终止:上述代码在遍历dict1时,一旦发现不符合条件的键值对就立即返回False,避免不必要的后续遍历,这本身就是一种简单有效的优化。
  2. 减少重复计算:这里不存在明显的重复计算情况,因为逻辑相对简单,主要操作就是对dict1进行遍历并对dict2进行查询。
  3. 数据结构调整:如果dict1dict2非常大,在某些情况下可以考虑使用collections.Counter,但对于本题判断键值对是否存在且满足大小关系的场景,原生字典操作已经比较高效,暂不适合使用Counter进行优化。所以整体上目前代码的效率在当前场景下已经较高。