2013-03-28 94 views
0

我有一個對象列表。我有一個用戶輸入的字符串。我需要檢查並查看字符串是否在對象列表中。檢查eval(字符串)是否在對象列表中。在Python

例如:

string = "book" 
object_list = [book, paper, pencil] 
if eval(string) in object_list: 
    #do this, etc 

這個工作,只要該字符串在列表中。如果字符串是別的東西,如: 字符串=「統治者」

然後if eval(string)...聲明給出了一個錯誤: NameError: 'ruler' is undefined.

+1

哎喲,我錯誤地標記它作爲重複,請忽略。好吧,無論如何:請參閱可能的重複[是否使用eval在Python中的一個壞習慣?](http://stackoverflow.com/questions/1832940/is-using-eval-in-python-a-bad-practice) – delnan 2013-03-28 02:45:18

+0

什麼你真的**試圖做什麼?什麼*是*'書'等等?假設你在'object_list'中找到了這個項目;那麼什麼?爲什麼運行你的程序的人應該知道你的變量被命名了? – 2013-03-28 04:01:16

回答

2

不要使用eval - 只是嗯,可以創建一個字典映射如:

dispatch = {'book': book, ...} 

隨後使用,讓回溯發生 - 更多的控制....

或在最壞的情況使用globals()

if globals()[string] in object_list: 
    # do something... 
+0

我是新手編程。你介意多解釋一下嗎?我已經閱讀了全局函數,但我不明白。我怎樣才能讓字典在值的位置上包含對象本。 – user2218093 2013-03-28 03:12:50

+0

當然 - 你可以做的最好的事情是在手冊中查找'globals()',或者查看'dict'是如何工作的... – 2013-03-28 03:15:34

+0

我已經完成了這兩個工作。 'Globals:返回一個代表當前全局​​符號表的字典'。這對我來說是希臘人。我已經使用了一些字典,但我不知道如何獲取字符串並將其轉換爲包含字符串鍵和對象值的字典。 – user2218093 2013-03-28 03:28:22

1

,如果你需要檢查字符串是否在列表中,爲什麼不ü只是使用時,

if string in object_list: 
    #code 
+0

,因爲我會比較字符串與對象。如果[書籍,鉛筆]中的「書」返回錯誤。 – user2218093 2013-03-28 03:36:42

+0

然後你可以使用字典 – 2013-03-28 03:41:12

相關問題