This isn't the best approach, but after all night of trial and error, I got the functionality I was looking for with the following code:
if event.type == KEYDOWN: if event.key in (K_UP, K_DOWN, K_LEFT, K_RIGHT): self.player.move_keys.append(pygame.key.name(event.key)) self.player.move = self.player.move_keys[-1] if event.type == KEYUP: if event.key in (K_UP, K_DOWN, K_LEFT, K_RIGHT): del self.player.move_keys[-1] if not len(self.player.move_keys) == 0: if not self.player.move_keys[-1] == pygame.key.name(event.key): self.player.move = self.player.move_keys[-1] else: self.player.move = False