需要在示例中解释 lambda 行为

Need explanation of lambda behavior in example

我正在查看 python 代码,它是强化学习的一部分

LEFT, RIGHT = range(2)
pi = lambda s: {
    0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT
}[s]

for s in range(7):
    print(pi(s))

output:
0
0
0
0
0
0
0

我的问题是 lambda 中的 [s] 是什么?在此上下文中的 lambda 行为。字典是否保存在列表中?如果字典保存在列表中,我们必须通过列表访问我们必须将 pi[0][s] 打印出来,对吗?请解释

pi = lambda s: {
    0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT
}[s]

无非就是

def pi(s):
    return {0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}[s]

哪里

{0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}[s]

正在获取键 s 的属性(此处为 {0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT})。 所以 {0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}[1] 给出 LEFT 因为 LEFT 是键 1.

的属性

上面的代码定义了这个字典:

dict = {
    0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT
}

或者 (left = 0):

dict = {
    0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:0
}

pi lambda returns dict[s] 其中 s 是字典中的 key。 所以调用 pi(s) 等于返回 dict[s] for key = s.