Python match/case 使用字典键和值
Python match/case using dictionary keys and values
我正在制作一个 pygame 游戏,每当我 运行 我的代码时,我都会收到错误 expected ':'
。我知道在 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
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
2。你可以使用点分字典
它只是一个子类字典 __getattr__
returns self.get
.
这个有一个包 here
如果你不是创建该字典的人,你可以像这样转换它 DottedDict({'bar': 2, 'foo': 1})
我正在制作一个 pygame 游戏,每当我 运行 我的代码时,我都会收到错误 expected ':'
。我知道在 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
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
2。你可以使用点分字典
它只是一个子类字典 __getattr__
returns self.get
.
这个有一个包 here
如果你不是创建该字典的人,你可以像这样转换它 DottedDict({'bar': 2, 'foo': 1})