>>> spam = {'name': 'Zophie', 'age': 7}
>>> 'name' in spam.keys()
True
>>> 'name' in spam.items()
False
>>>
在python 3.6中,当检查字典中是否存在一个键时,该keys()
方法返回True
,而该items()
方法返回False
相同的键。为什么会这样?
items()
包含元组,键值对:
>>> spam.items()
dict_items([('name', 'Zophie'), ('age', 7)])
您的密钥不是这样的元组。它可能包含在元组之一中,但in
不会递归测试是否包含。
要么测试正确的键值元组:
>>> ('name', 'Zophie') in spam.items()
True
或者,如果您无法仅访问keys()
字典视图,请使用该any()
函数单独测试每一对(当找到匹配项时,迭代会提前停止):
>>> any('name' in pair for pair in spam.items())
True
或者
>>> any(key == 'name' for key, value in spam.items())
True
另外,如果您所做的只是测试密钥,那么只需使用key in dictionary
. 有没有必要创建过用于这种情况下,键的单独字典视图; 这只是浪费 Python 周期和内存,因为针对字典的包含测试实现了完全相同的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句