我正在尝试从列表中过滤项目,但出现语法错误: 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()