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

Using a dictionary as switch without assigning it to a variable

以下两个"switches"作品:

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])()

"dictionary switch" 惯用法适用于当您有一个要映射到另一个值的键时。在你的情况下这是多余的。