0

我有两个清单:

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

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

2 回答 2

5

使用字典视图和集合:

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*()方法都消失了。

于 2013-05-13T08:39:46.783 回答
1

您可以使用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) 
于 2013-05-13T08:39:48.830 回答