2012-09-19 126 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()和索引()