リストからアイテムをフィルタリングしようとしていますが、次の構文エラーが発生します: SyntaxError: 無効な構文
コード:
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: 無効な構文
コード:
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]
まず、「名前」キーを使用する場合は、リストの代わりに辞書を使用する必要があります。このように見えるはずです
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() を実行します。