我有两个清单:
- 必须在 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)