Python 如何遍历键成对的字典?
我正在创建棋盘的字典表示法,其中键是表示位置的坐标对,值是表示棋子类型的字符串。例如:Python 如何遍历键成对的字典?,python,dictionary,iteration,Python,Dictionary,Iteration,我正在创建棋盘的字典表示法,其中键是表示位置的坐标对,值是表示棋子类型的字符串。例如: playerPieces = { (0,0):'R', (1,0):'S', (2,0):'B', (3,0):'Q' ... } 两位玩家都有一本这样的字典。我的问题在于尝试迭代一个玩家的所有片段。我尝试了三种不同的方法,但似乎都不管用 如果我尝试将字典解压成键、值对,如下所示: 播放片段中的位置、片段: 相反,position和piece分别解压密钥对的第一个和第二个元素(因此对于通过playerPie
playerPieces = { (0,0):'R', (1,0):'S', (2,0):'B', (3,0):'Q' ... }
两位玩家都有一本这样的字典。我的问题在于尝试迭代一个玩家的所有片段。我尝试了三种不同的方法,但似乎都不管用
播放片段中的位置、片段:
position
和piece
分别解压密钥对的第一个和第二个元素(因此对于通过playerPieces
的第一次迭代,我将得到position==0
和piece==0
。这不是很有帮助
对于(列,行),播放片段中的片段:
TypeError:“int”对象不可编辑
,这是我目前无法理解的
对于播放片段中的列、行、片段:
ValueError:需要两个以上的值才能解包
那么,还有什么其他选择?可以这样做吗?第二个选择对我来说似乎是最有可能的选择,所以我认为理解TypeError是弄清楚发生了什么的关键,但我有点不知所措。默认情况下,Python在字典中迭代键值,这就是为什么表示位置的原因,playerPieces中的片段:
简单地从每个键中提取两个值,这是造成混淆的主要原因
记住这一点,只需在键上迭代,然后访问每个元素。使用下面这样的示例将完成您尝试执行的操作
for position in playerPieces:
piece = playerPieces[position]
默认情况下,Python迭代字典中的键值,这就是为什么在playerPieces中为position,piece:
简单地从每个键值中提取两个值,这是造成混淆的主要原因
记住这一点,只需在键上迭代,然后访问每个元素。使用下面这样的示例将完成您尝试执行的操作
for position in playerPieces:
piece = playerPieces[position]
您需要迭代字典的项:
for (col, row), piece in d.items():
print(col, row, piece)
迭代一个dict
只会迭代它的键。您需要迭代一个字典的项:
for (col, row), piece in d.items():
print(col, row, piece)
迭代一个dict
只会迭代它的键。使用iteritems:
playerPieces = { (0,0):'R', (1,0):'S', (2,0):'B', (3,0):'Q'}
for position, piece in playerPieces.iteritems():
print position, piece
输出:
(3, 0) Q
(2, 0) B
(1, 0) S
(0, 0) R
使用iteritems:
playerPieces = { (0,0):'R', (1,0):'S', (2,0):'B', (3,0):'Q'}
for position, piece in playerPieces.iteritems():
print position, piece
输出:
(3, 0) Q
(2, 0) B
(1, 0) S
(0, 0) R
for(col,row),piece in playerpiees.items()
for(col,row),piece in playerpiees.items()
for(col,row),piece in playerpies.items()现在我觉得自己是个傻瓜。我会在足够长的时间内接受这个答案