使用字典作为开关,而不将其分配给变量



以下两个"开关"工作:

return {
    1: func1,
    2: func2,
    3: func3
}[random.choice([1,2,3])]()
d = {
    1: func1,
    2: func2,
    3: func3    
}
return d[random.choice(d.keys())]()

它们实际上是相同的。

现在我想做同样的事情,但从未将字典分配给变量 - 这可能吗?我知道_运算符会做类似的事情,所以我想知道这是否也可以做到。

return {
    1: func1,
    2: func2,
    3: func3
}[random.choice(???.keys())]()

我只是出于好奇而问。

稍微做一点,嗯,不那么间接

return random.choice([func1, func2, func3])()

"字典切换"习惯用语适用于当您有一个要映射到另一个值的键时。在您的情况下,这是多余的。

最新更新