2

リストからアイテムをフィルタリングしようとしていますが、次の構文エラーが発生します: 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()

何か案が?

4

3 に答える 3

8

[item for item in array] いいえ [item in array]

于 2012-09-19T10:49:15.997 に答える
1

まず、「名前」キーを使用する場合は、リストの代わりに辞書を使用する必要があります。このように見えるはずです

    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 に答える