Python 是否可以将两个 if 和一个 else 语句放在一起?

标签 python if-statement

if 'a' in dict:
    dict['a'] do something
if 'b' in dict:
    dict['b'] do something
# After checking the above two if statements, run the else statement below
else:
    dict do something

我想检查 dict 中是否有 'a''b'。如果我使用elif语句,那么如果'a'dict中,则检查'b'将被跳过。

是否可以检查以上两种情况,如果'a''b'都不在dict中,那么我们else 做其他事情?

不过我可以用一种乏味的方式来实现它。

if `'a' or 'b'` in dict:
    if 'a' in dict:
        dict['a'] do something
    if 'b' in dict:
        dict['b'] do something
else:
    dict do something

最佳答案

dictionary = {"a":1, "b":2}
if (cond1 := "a" in dictionary) | (cond2 := "b" in dictionary):
    if cond1:
        pass
    if cond2:
        pass
else:
    pass

使用最近添加的语言 - := 运算符,您可以捕获这两个条件的值。虽然您仍然需要分别检查它们是真是假,但它可以让您跳过重复相同的检查两次。

必须使用

| 代替 or,因为后者的惰性评估 - 如果 cond1 为 True,则永远不会检查第二个条件,并且 cond2 将未定义。 | 将确保检查这两个条件,但它使解决方案不那么漂亮。

关于Python 是否可以将两个 if 和一个 else 语句放在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70963257/

相关文章:

c++程序运行不正确的else语句

python - Python 中 BeautifulSoup 中的 .find()

python - 平均迭代列表

python - 如何在 SPARQL 查询中预定义变量

java - 按下按钮时强制关闭应用程序错误

java - 在 if-else 中初始化字符串变量

python - 在字典和 numpy 数组中查找最大值的性能

python - Django - 当用户提交表单时,会创建表,但表之间的连接不是

java - 错误 : 'else' without 'if'

javascript - Javascript 中 boolean 语句是如何计算的