为什么keys()和items()方法为同一个键返回不同的布尔值? (Python 3.6)

时间:2017-07-21 08:52:52

标签: python dictionary key items

index.html

在python 3.6中,当检查字典中是否存在键时,<meta http-equiv="Content-Security-Policy" content="default-src gap://ready *; style-src &apos;self&apos; &apos;unsafe-inline&apos;; script-src &apos;self&apos; https://maps.googleapis.com https://*.googleapis.com &apos;unsafe-inline&apos; &apos;unsafe-eval&apos;"> 方法返回>>> spam = {'name': 'Zophie', 'age': 7} >>> 'name' in spam.keys() True >>> 'name' in spam.items() False >>> ,而keys()方法返回True相同的键。为什么会这样?

4 个答案:

答案 0 :(得分:2)

这是因为items()返回键和值对的列表。

IsItemsHost="True"

答案 1 :(得分:0)

items()包含元组,键值对:

>>> spam.items()
dict_items([('name', 'Zophie'), ('age', 7)])

你的钥匙不是这样的元组。其中一个元组中可能包含,但in不会递归测试包含。

测试正确的键值元组:

>>> ('name', 'Zophie') in spam.items()
True

或者如果您无法访问keys()字典视图,请使用any() function单独测试每个对(在找到匹配项时提前停止迭代):

>>> any('name' in pair for pair in spam.items())
True

>>> any(key == 'name' for key, value in spam.items())
True

另外,如果您正在测试密钥,那么只需使用key in dictionary即可。 不需要在该案例的密钥上创建单独的字典视图;它只是浪费Python周期和内存,因为对字典的包含测试可以获得完全相同的结果。

答案 2 :(得分:0)

dict.keys()会返回一个列表,但dict.items()会返回key,value对中的元组列表,因此不匹配。

例如:

name is not equal to ('name': 'Zophie')

希望你明白这一点。

答案 3 :(得分:0)

当然他们是不同的。

在垃圾邮件变量中 - &gt; SILENCED_SYSTEM_CHECKS = ['mysql.E001']

spam = {'name': 'Zophie', 'age': 7}nameage'name': 'Zophie'