我有两个清单:
dict可选的键
答案 0 :(得分:5)
使用dictionary views并设置:
missing = set(required) - some_dict.viewkeys()
optional_present = some_dict.viewkeys() & optional
像字典一样设置廉价和快速的成员资格测试,并且设置操作可以轻松测试项目是否存在。您真的希望将required
和optional
设置为以。开头。
例如,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)