Python 如何检查字典是否有不需要的键?

Python 如何检查字典是否有不需要的键?,python,Python,我有两份清单: 必须在dict中的键 dict的可选键 如何检查字典中必须存在的键是否存在 如何检查字典中是否有任何可选键 使用和设置: missing = set(required) - some_dict.viewkeys() optional_present = some_dict.viewkeys() & optional 集合和字典一样,使成员资格测试既便宜又快捷,集合操作使测试项是否存在变得容易。您确实希望将设置为必需和可选以开始 例如,计算差异,因此missing被设

我有两份清单:

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

  • 如何检查字典中必须存在的键是否存在
  • 如何检查字典中是否有任何可选键
使用和设置:

missing = set(required) - some_dict.viewkeys()
optional_present = some_dict.viewkeys() & optional
集合和字典一样,使成员资格测试既便宜又快捷,集合操作使测试项是否存在变得容易。您确实希望将
设置为必需
可选
以开始

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

使用(通常为二进制AND)可以得到交集,因此
optional\u present
可以给出字典中哪些键也在
optional
序列中(在这种情况下不必是一个集合,但使用集合是有意义的)

对于测试单个键,您仍然可以在某些目录中使用
键,但使用set操作可以避免过度循环

注意,这是特定于Python的(在Python 2.7中添加);在Python 3中,默认情况下字典枚举方法和返回字典视图以及
.view*()
方法都不存在了。

使用和设置:

missing = set(required) - some_dict.viewkeys()
optional_present = some_dict.viewkeys() & optional
集合和字典一样,使成员资格测试既便宜又快捷,集合操作使测试项是否存在变得容易。您确实希望将
设置为必需
可选
以开始

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

使用(通常为二进制AND)可以得到交集,因此
optional\u present
可以给出字典中哪些键也在
optional
序列中(在这种情况下不必是一个集合,但使用集合是有意义的)

对于测试单个键,您仍然可以在某些目录中使用
键,但使用set操作可以避免过度循环


注意,这是特定于Python的(在Python 2.7中添加);在Python3中,默认情况下字典枚举方法和返回字典视图以及
.view*()
方法都消失了。

对于第一种情况,可以使用字典中的
键,设置差异将解决第二种情况。dict可以像集合一样使用
dict.viewkeys()
dict.keys()
在py3x中):

您可以使用
all()
检查dict中是否存在列表中的所有键

all(key in your_dict for key in keys)
设置差异:

your_dict.viewkeys() - set(keys) 

对于第一种情况,您可以使用指令中的
键,设置差异将解决第二种情况。dict可以像集合一样使用
dict.viewkeys()
dict.keys()
在py3x中):

您可以使用
all()
检查dict中是否存在列表中的所有键

all(key in your_dict for key in keys)
设置差异:

your_dict.viewkeys() - set(keys) 

还值得注意的是,在Py3k中,dict.keys()
的工作方式类似于不再存在的dict.viewkeys()
,第一行减法是向后看的。你不想从字典中减去/删除“required”吗?意思是:
missing=some_dict.view()-set(必需)
(Python3语法)@ahogen:no,因为这样你就可以得到额外的键,这些键位于所需键之上。您需要
required
集合中的所有键,但不在字典中,这就是我的答案中的表达式所实现的。还值得注意的是,在Py3k
dict.keys()
中,dict.viewkeys()类似于
dict.viewkeys()
的工作方式,它不再存在第一行减法,而是向后看。你不想从字典中减去/删除“required”吗?意思是:
missing=some_dict.view()-set(必需)
(Python3语法)@ahogen:no,因为这样你就可以得到额外的键,这些键位于所需键之上。您需要
必需的
集合中的所有键,但字典中没有,这就是我答案中的表达式所实现的。嘿,太好了。。!!我的名字第一次出现在编辑上!!嘿,太好了。。!!我的名字第一次出现在编辑上!!