2012-04-17 69 views
0

这里是我当前的代码:使用Python中根据用户输入一个类中的字典

class city1: 
    dict = {"north":"city2", "east": 0, "south": 0, "west": "city3"} 

validcmds = ['north', 'east', 'south', 'west'] 
input=raw_input(">>") 
input=set(input.split()) 
validcmds=set(validcmds) 
output = list(validcmds.intersection(input)) 
print city1.dict(output) 

我不知道什么是错的这条线:

print city1.dict(output) 

基本上我只是想输出在city1类的字典中查找。这是为我的短信基于RPG :)

回答

0

你不使用括号来访问字典。改为使用print city1.dict[output]。但是,它看起来像是从字典键中创建一个列表,并且Python会抱怨说,如果您尝试像这样在列表中编制索引,则该列表不可散列。

如果output中有多个按键,那就试试这个来代替:

print [city1.dict[elem] for elem in output] 

这也是不好的做法来命名它的类型后的数据结构。我会考虑将dict重命名为其他内容,例如city_dict或其他更具描述性的内容。

+0

谢谢:)我认为它是city1类的一部分,称它字典会好的:)只是看我的代码,并意识到我是非常愚蠢的:)谢谢:)我经常陷入混乱然后自己解决,我真的应该看到这个! – RPGer 2012-04-17 19:06:03

+0

如果我的答案或下面同样有用的其他答案中的任何一个对您有帮助,请考虑单击左侧的复选标记以接受它。当你增加你的声誉时,如果你认为他们有帮助,随时回来并且提出答案。 – ely 2012-04-17 19:13:26

0

输出是一个键列表。您无法一次性将您的字典键入一列键。你应该这样做: print [city1.dict[x] for x in output]

顺便说一句,input是一种方法,并通过分配输入你删除的命令。(不是在这里重要的,但你可能想知道)

0

首先,不要用dict这个词。当你这样做时,你掩盖了内置的dict()方法。接下来,您可以使用d.get(key)方法从字典中检索元素。

您可能想要查看您的代码,因为我不相信它能够以当前状态工作,即使在您从字典中检索元素之后。

相关问题