如何检查字典是否有不需要的密钥?

Pla*_*bit 0 python

我有两个清单:

  • 必须在dict中的键
  • dict可选的键

    1. 如何检查词典中必须存在的键是否存在?
    2. 如何检查字典中是否有任何可选键?

Mar*_*ers 5

使用字典视图和集:

missing = set(required) - some_dict.viewkeys()
optional_present = some_dict.viewkeys() & optional
Run Code Online (Sandbox Code Playgroud)

像字典一样,集合使得成员资格测试变得便宜和快速,并且设置操作使得测试项目是否存在变得容易.你真的想制作requiredoptional开始使用.

例如,集合上的减法计算差异,因此missing设置为required列表与字典中的键之间的差异.

使用&集合上运算符(通常是二进制AND)为您提供交集,因此optional_present为您提供字典中的哪些键也在optional序列中(在这种情况下不必是集合,但使用集合会有意义) .

为了测试您仍然可以使用的单个键key in some_dict,但使用set操作可以避免过多的循环.

注意,这dict.viewkeys()是Python特有的(在Python 2.7中添加); 在Python 3,字典枚举的方法.keys(),.values()并且.items()在默认情况下返回字典视图和.view*()方法都没有了.