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