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

vic*_*cco 0 python dictionary key switch-statement

以下两个"开关"工作:

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())]()
Run Code Online (Sandbox Code Playgroud)

它们实际上是一样的.

现在我想做同样的事情,但没有将字典分配给变量 - 这可能吗?我知道_运营商会做类似的事情,所以我想知道这是否也可以做到.

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

我只是出于好奇而问.

dec*_*eze 6

只是做一点,嗯,不那么间接:

return random.choice([func1, func2, func3])()
Run Code Online (Sandbox Code Playgroud)

当你有一个要映射到另一个值的键时,"词典切换"习惯用法就是用来.在你的情况下,这是多余的.