列表筛选的python语法错误

列表筛选的python语法错误,python,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() 有什么想法吗?[数组中的项目对应项目] 不 [数组中的项]首先,如果要使用“name”键,应该使用字典而不是列表。应该是这样的

我试图从列表中筛选一个项目,但出现语法错误: 语法错误:无效语法

守则:

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

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

有什么想法吗?

[数组中的项目对应项目]

[数组中的项]

首先,如果要使用“name”键,应该使用字典而不是列表。应该是这样的

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

也许有更好的方法,更具python风格,但这一种有效;)

我同意Bogna Anna Ka的观点,使用字典

在我看来,这有点像蟒蛇:

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

您迭代键值对,而不是创建一个键值列表并迭代它们(ppl中p的隐式迭代:),然后执行get()、pop()和index()

我猜这不是完整的代码段,所以您可以指定哪一行引发异常吗)?我添加了一个与您类似的答案,但有一点小小的变化——它不适合放在评论框中。。