在dict中拆开元组

Noa*_*123 3 python dictionary tuples

所以我正在制作一个游戏,我有一个元组字典,其中包含游戏场上物体的坐标,如下所示(例如):

location = {player : (1, 4), monster : (3, 2), escape : (4, 0)}
Run Code Online (Sandbox Code Playgroud)

稍后在我的代码中,我想更改坐标以便更容易理解区域.第一个定义部分是相应的字母,然后是第二个数字,看起来像这样:玩家将在B4中,怪物在C2中,依此类推.右上角的"区域"由元组(4,4)表示,左下角的"区域"由元组(0,0)表示.我唯一能想到的可能是这样的:

location = {player : (1, 4), monster : (3, 2), escape : (4, 0)}
letters = ["A", "B", "C", "D", "E"]
playerArea = "{}{}".format(letters[int(location[player[0]])+1], location[player[1]])
Run Code Online (Sandbox Code Playgroud)

简而言之,它没有用.我认为问题在于从字典中解压缩元组并将其用作从列表字母中获取字母的数字.抱歉这是令人困惑的,我会尽力回答你的所有问题.

Ray*_*ger 6

问题的核心是如何将数字行/列坐标转换为更具可读性(战舰式).这是一个简单而快速的功能:

>>> def rc_to_abc(x, y):
        return 'ABCDEFGHIJKLOMOPQRSTUVWXYZ'[x] + str(y)

>>> rc_to_abc(1, 4)
'B4'
>>> rc_to_abc(3, 2)
'D2'
>>> rc_to_abc(4, 0)
'E0'
Run Code Online (Sandbox Code Playgroud)

  • 或者`chr(65 + x)`而不是''ABCDEFGHIJKLOMOPQRSTUVWXYZ'[x]` - 但这不能很好地处理无效输入.IndexError可能比意外字符更好. (5认同)