如果条件设置为真,则找到 return 键的最优雅方式

Find most elegant way to return key if condition is set to true

我有一本 python 字典

slot_a = 'a'
slot_b = 'b'

# dict which lists all possible conditions
con_dict = {"branch_1": slot_a == 'a' and slot_b == 'b',
            "branch_2": slot_a == 'a' and slot_b == 'c'}

现在我想 return 第一个 true 条件的键。在本例中是 branch_1.

我的解决方案是:

# Pick only the condition which is set to True
true_branch = [k for k, v in con_dict.items() if v == True]

true_branch
>>> branch_1

由于分支的数量可以很长,我想知道是否有更优雅的方法来获得相同的结果?!也许 if / elif / else 然后是 return 键?甚至完全不同的东西?最后我需要的只是真实条件的名称。因此,甚至可能不需要使用字典。

求灵感!

您可以尝试使用 iterator。它会在没有遍历整个“对象”的情况下获得第一个匹配项后立即停止。

ks, vs = zip(*con_dict.items()) # decoupling the list of pairs
i = 0
vs = iter(vs)     # terms are all booleans
while not next(vs):
    i += 1

del vs # "free" the iterator

print(ks[i])

true_branch = next((k for k, condition in con_dict.items() if condition), None)
print(true_branch)