在字典中,我有一些多重条件与布尔条件。
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()
方法二
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
我期望的结果是do 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
方法?
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()
你的方法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()