我如何运行整个循环然后转到else
声明,如果if
条件是假的?
输出是:
No
No
Yes
但我只希望它在所有值不相等时跳转到 else 语句!
test_1 = (255, 200, 100)
test_2 = (200, 200, 100)
test_3 = (500, 50, 200)
dict = {"test_1":test_1,
"test_2":test_2,
"test_3":test_3}
for item in dict:
if dict[item] == (500, 50, 200):
print('Yes')
else:
print('No')
所以基本上输出应该说,因为其中一个值是正确的。
Yes
您需要运行循环直到找到匹配项。您可以使用any https://docs.python.org/3/library/functions.html#any用于此目的的函数,就像这样
if any(dict_object[key] == (500, 50, 200) for key in dict_object):
print('Yes')
else:
print('No')
我们将生成器表达式传递给any
功能。生成器表达式从字典中获取每个项目并检查它是否等于(500, 50, 200)
。一旦找到匹配项,any
将返回True
立即进行,其余的迭代甚至不会发生。如果没有任何项目匹配(500, 50, 200)
, any
将返回False
和No
将被打印。
Edit:在聊天中与OP进行了长时间的讨论后,他实际上想知道也匹配的项目。所以,更好的解决方案是与for..else
就像 NPE 的另一个答案一样,就像这样
for key in dict_object:
if key.startswith('test_') and dict_object[key] == (500, 50, 200):
# Make use of `dict_object[key]` and `key` here
break
else:
print('No matches')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)