我正在尝试从列表中过滤项目,但出现语法错误: 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()
任何想法?
我正在尝试从列表中过滤项目,但出现语法错误: 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()
任何想法?
[item for item in array] 
不是
[item in array]
首先,如果你想使用'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,但这个工作;)
我同意 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()