我有两个清单:
- 必须在 dict 中的键
dict 可选的键
- 如何检查字典中必须存在的键是否存在?
- 如何检查字典中是否有任何可选键?
使用字典视图和集合:
missing = set(required) - some_dict.viewkeys()
optional_present = some_dict.viewkeys() & optional
集合,就像字典一样,使成员资格测试变得便宜和快速,集合操作可以很容易地测试项目是否存在。你真的很想从头required开始optional。
例如,集合上的减法计算差异,因此missing设置为required列表和字典中的键之间的差异。
&在集合上使用运算符(通常是二进制 AND)会给您交集,因此可以optional_present为您提供字典中的哪些键也在optional序列中(在这种情况下不必是集合,但在那里使用集合会有意义) .
对于测试单个键,您仍然可以使用key in some_dict,但使用 set 操作可以避免过度循环。
请注意,这dict.viewkeys()是特定于 Python 的(在 Python 2.7 中添加);在 Python 3 中,字典枚举方法.keys(),.values()并.items()默认返回字典视图,这些.view*()方法都消失了。
您可以使用key in your_dict第一种情况,设置差异将解决第二种情况。dicts 可以使用dict.viewkeys()(dict.keys()在 py3x 中)表现得像集合:
您可以使用all()来检查列表中的所有键是否都存在于字典中。
all(key in your_dict for key in keys)
设置差异:
your_dict.viewkeys() - set(keys)