使用字典键和值的 Python 匹配/大小写

The*_*der 5 dictionary case switch-statement python-3.10

我正在制作一个 pygame 游戏,每当我运行我的代码时,我都会收到错误expected ':'。我知道 using[]in match/case 块可用于其他用途,但如何解决这个问题?

case pygame.KEYDOWN:

    match event.key:

        case game.controls["pan_up"]:
            world_pos[1] -= 1

        case game.controls["pan_left"]:
            world_pos[0] -= 1

        case game.controls["pan_down"]:
            world_pos[1] += 1

        case game.controls["pan_right"]:
            world_pos[0] += 1
Run Code Online (Sandbox Code Playgroud)

错误信息框

ניר*_*ניר 5

1.您可以使用.get

基于您的代码的示例:

case pygame.KEYDOWN:

    match event.key:

        case game.controls.get("pan_up"):
            world_pos[1] -= 1

        case game.controls.get("pan_left"):
            world_pos[0] -= 1

        case game.controls.get("pan_down"):
            world_pos[1] += 1

        case game.controls.get("pan_right"):
            world_pos[0] += 1
Run Code Online (Sandbox Code Playgroud)

2.你可以使用点字典

它只是一个__getattr__返回的子类字典self.get

这里有一个包 ,如果你不是创建该字典的人,你可以像这样转换它DottedDict({'bar': 2, 'foo': 1})