2012-09-19 158 views
2

我試圖從名單中篩選的項目,我得到一個語法錯誤: 語法錯誤:無效的語法Python語法錯誤

代碼:

a['name'] = 'Dan' 
b['name'] = 'Joe' 

ppl = [a,b] 
inputName = raw_input('Enter name:').strip() 
person = [p in ppl if p['name']==inputName].pop() 

有什麼想法?

+0

我猜這不是完整的代碼片段,所以你可以指定哪一行引發異常)? –

回答

8

[item for item in array][item in array]

1

首先,你應該使用字典而不是列表,如果你想用「名」鍵。它應該是這樣的

a = {'name':'Dan'} 
    b = {'name':'Joe'} 
    ppl = [a,b] 
    for p in ppl: 
     if(p['name']==inputName): 
      person=ppl.pop(ppl.index(p)) 

也許有更好的方法,更Python,但是這一次的工作;)

+0

我已經添加了一個類似於您的答案,但略有扭曲 - 它不適合在評論框中。 –

0

我Bogna安娜家同意,使用字典。

這是在我看來,更Python一點:

a = {'name':'Dan'} 
b = {'name':'Joe'} 
ppl = [a,b] 
for key, value in ppl.iteritems() 
    if(key == inputName): 
     person = value 

您遍歷鍵值對,而不是創建密鑰列表並超過他們迭代(其中對於p中的脂肪酶:含蓄)和做的get(),pop()和索引()