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

时间:2013-05-13 08:37:19

标签: python

我有两个清单:

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

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

2 个答案:

答案 0 :(得分:5)

使用dictionary views并设置:

missing = set(required) - some_dict.viewkeys()
optional_present = some_dict.viewkeys() & optional

像字典一样设置廉价和快速的成员资格测试,并且设置操作可以轻松测试项目是否存在。您真的希望将requiredoptional设置为以。开头。

例如,subtraction on sets计算差异,因此missing设置为required列表与字典中的键之间的差异。

使用& operator on sets(通常为二进制AND)为您提供交集,因此optional_present可以为您提供字典中的哪些键也在optional序列中(不一定是在这种情况下设置,但使用一组有意义)。

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

请注意dict.viewkeys()特定于Python(在Python 2.7中添加);在Python 3中,字典枚举方法.keys().values().items()默认返回字典视图,.view*()方法已经消失。

答案 1 :(得分:1)

您可以使用key in your_dict作为第一种情况,设置差异将解决第二种情况。使用dict.viewkeys()(py3x中的dict.keys()),Dicts的行为类似于集合:

您可以使用all()检查列表中的所有键是否都存在于词典中。

all(key in your_dict for key in keys)

设定差异:

your_dict.viewkeys() - set(keys)