当前位置: 首页 > 知识库问答 >
问题:

如何在Python中迭代字典以向不同方向移动

艾昊明
2023-03-14

我正在为我的作业创建一个基于文本的游戏。我可以做任何事情,除了在房间之间移动,使用方向:北,南,东和西。我没怎么接触过字典,我在努力。我不明白如何做到这一点,尤其是在有两个不同方向的卧室里。方向:游戏应该提示玩家输入在房间之间移动的命令#字典将一个房间链接到其他房间。

rooms = {
        'Great Hall': {'South': 'Bedroom'},
        'Bedroom': {'North': 'Great Hall', 'East': 'Cellar'},
        'Cellar': {'West': 'Bedroom'}
    }

共有2个答案

闻人志
2023-03-14

将当前房间的名称保留在变量中。

询问用户他们想搬到哪里。

如果当前房间允许沿该方向移动,请将当前房间变量更新为新房间。

location = 'Great Hall'

print(f'You are currently in {location}.')
move = input('Enter a direction to move: ')
if move in rooms[location]:
    location = rooms[location][move]
    # location is now e.g. 'Bedroom'
else:
    print('You cannot go that way.')
沈单弓
2023-03-14

这基本上是对OP关于@John Gordon回答的评论的回答

在问题中,房间是一个2D字典(字典中的字典)。当我们使用房间[位置]时,例如房间['Bedroom'],它会从键“Bedroom”中获取相应的移动字典,即{'North':'Great Hall','East':'Cellar'},同样,如果我们使用房间[位置][移动],它会从返回的字典中获取移动的值。因此,如果我使用房间['Bedroom']['North']它将返回“Great Hall”。

我希望这解决了你的疑问

 类似资料:
  • 我从一个布局数组中拼接了一个位图,它将一个更大的位图作为指导。在一个位图中使用多个位图。我旋转整个位图时,我的解决方案是重新绘制它,但要让数组考虑这个旋转。位图的制作由数组的顺序决定。缝合假定数组从零开始,即第一个索引或最左上角,然后向右到最后,再到下一行的开始。我想有一个90、180、270和360功能可以调用。我想360很容易,我倒着迭代。我用的是11乘11,这是常数。 例如 当我旋转90度

  • 问题内容: 在Python上进行迭代时从字典中删除项目是否合法? 例如: 这个想法是从字典中删除不满足特定条件的元素,而不是创建一个新字典,该字典是正在迭代的字典的子集。 这是一个好的解决方案吗?有没有更优雅/更有效的方法? 问题答案: 此答案不适用于,并且会给出。 :字典在迭代过程中更改了大小。 发生这种情况是因为返回的是迭代器而不是列表。正如评论中指出的那样,只需将其转换为列表即可,它应该可以

  • 问题内容: 假设我们有一个Python字典,我们正在像这样迭代它: (并且仅仅是一些黑盒转换。) 换句话说,我们尝试在使用对其进行迭代的同时向其中添加/删除项目。 这个定义好吗?您能否提供一些参考来支持您的答案? (很明显,如果损坏了该如何解决,所以这不是我所追求的角度。) 问题答案: 在python文档页面(针对2.7)上明确提到了 使用而添加或删除字典条目可能会产生一种或无法遍历所有条目。 对

  • 我有这段HTML代码。我想去一个兄弟节点。我按标题进行搜索(因为这是UI中唯一的值),但我想移动到相同的级别,但使用不同的类名,它将包含ant-select-tree-switcher_close。 这是标记内容的xpath,我只想在第一个span的同一级别中移动,但不包括span1或任何硬编码的解决方案。我想通过类名搜索包含单词ant-select-tree-switcher_close作为类名

  • 在AnyLogic 7中,是否有任何功能可用于在代理所面向的方向(角度)上移动代理?有多种方法可以移动到特定的单元、代理和特定的方向(东、西、北、南…),但我怎样才能根据特工面对的角度推动他前进呢? 类似于NetLogo的功能。

  • 我有一个字典数组,它是这样设置的: 如果我打印tableViewData,它如下所示: 我想让它看起来像这样: