Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何遍历键成对的字典?_Python_Dictionary_Iteration - Fatal编程技术网

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()现在我觉得自己是个傻瓜。我会在足够长的时间内接受这个答案