2

我正在尝试从列表中过滤项目,但出现语法错误: SyntaxError: invalid syntax

编码:

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

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

任何想法?

4

3 回答 3

8

[item for item in array] 不是 [item in array]

于 2012-09-19T10:49:15.997 回答
1

首先,如果你想使用'name'键,你应该使用字典而不是列表。它应该看起来像这样

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

也许有更好的方法,更pythonic,但这个工作;)

于 2012-09-19T10:59:58.390 回答
0

我同意 Bogna Anna Ka,使用字典。

在我看来,这更像是pythonic:

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()

于 2012-09-19T20:47:07.020 回答