2012-04-17 75 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)方法從字典中檢索元素。

您可能想要查看您的代碼,因爲我不相信它能夠以當前狀態工作,即使在您從字典中檢索元素之後。

相關問題