我在字典中有一些带有布尔值的条件
d = {
"statement01" = True,
"statement02" = True,
"statement03" = False,
"statement04" = False,
"statement05" = False
}
我使用if elif
方法1
if d["statement05"]:
if d["statement01"]:
func01()
func05()
elif d["statement04"]:
if d["statement01"]:
func01()
func04()
elif d["statement03"]:
if d["statement01"]:
func01()
func03()
elif d["statement02"]:
if d["statement01"]:
func01()
func02()
elif not d["statement01"]:
if d["statement05"]:
func05()
elif d["statement04"]:
func04()
elif d["statement03"]:
func03()
elif d["statement02"]:
func02()
else:
func01x()
方法2
if d["statement01"]:
func01()
if d["statement02"]:
func02()
elif d["statement03"]:
func03()
elif d["statement04"]:
func04()
elif d["statement05"]:
func05()
elif not d["statement01"]:
if d["statement02"]:
func02()
elif d["statement03"]:
func03()
elif d["statement04"]:
func04()
elif d["statement05"]:
func05()
else:
func01x()
在d
条件下,我希望结果是
做func01()
和func02()
但是如果条件字典类似
d2 = {
"statement01" = True,
"statement02" = False,
"statement03" = False,
"statement04" = False,
"statement05" = False
}
我希望只做func01()
如果字典像
d3 = {
"statement01" = False,
"statement02" = True,
"statement03" = False,
"statement04" = False,
"statement05" = False
}
只能func02()
有人可以用if else
方法提供其他/最佳方式来处理条件和预期结果吗?
答案 0 :(得分:0)
if d["statement01"]:
func01()
if d["statement02"]:
func02()
elif d["statement03"]:
func03()
elif d["statement04"]:
func04()
elif d["statement05"]:
func05()
elif not d["statement01"]:
func01x()
答案 1 :(得分:0)
您的方法2完全可以,只是您可以将elif not d["statement01"]:
替换为else:
。但是,如果您的条件列表较长,则可能需要按如下顺序使用
controls = [("statement02", func02),
("statement03", func03),
("statement04", func04),
("statement05", func05) ]
if d["statement01"]:
func01()
for s, f in controls:
if d[s]:
f()
break
else:
if not d["statement01"]:
func01x()