0

Python には、次のような「list」というリストがあります。

[{'lastname': 'lname1', 'firstname': 'fname1', 'shortname': 'SN1'},
{'lastname': 'lname2', 'firstname': 'fname2', 'shortname': 'SN2'},
{'lastname': 'lname3', 'firstname': 'fname3', 'shortname': 'SN3'}]

リスト内の各項目について、これらの属性のそれぞれにアクセスできる必要があります。したがって、各ユーザーの姓、各ユーザーの名などを取得する必要があります

これはリストなので、次のようにしようとしています:

for idx in enumerate(list):
        print(list[idx])

しかし、リストのインデックスはタプルではなく整数でなければならないというエラーが表示されます。

だからこれを試してみてください:

for idx in enumerate(list):
        print(idx)

次のような出力が得られます。

(0, {'lastname': 'lname1', 'firstname': 'fname1', 'shortname': 'SN1'})
(1, {'lastname': 'lname2', 'firstname': 'fname2', 'shortname': 'SN2'})
(2, {'lastname': 'lname3', 'firstname': 'fname3', 'shortname': 'SN3'})

私が望むのはインデックスを取得できることだけなので、各リスト項目を反復処理して次のように言うことができます

firstname = list[idx]["firstname"]
lastname = list[idx]["lastname"]

等々。

注:次のようなことを言うと

print(list[0]["firstname"]) 

それは完全に機能します。

私は何を間違っていますか?または、私は何をする必要がありますか?ありがとう!

4

4 に答える 4

1

JavaScript とは異なり、Python でシーケンスを反復処理すると、インデックスではなく要素が生成されます。

print idx['lastname']
于 2013-06-28T18:43:57.167 に答える
1

リストのインデックスは整数です。

>>> x = ['test','test2','test3']
>>> x[1]
'test2'

あなたが持っているのはリスト辞書です。したがって、リストと辞書を反復処理する必要があります。そのようです:

>>> x = [{'cat':'lol'},{'tigers':'lions'}]
>>> for z in x:
...  for d in z:
...   print z[d]
...
lol
lions

したがって、名前だけが必要な場合:

for d in list:
 print d['firstname']
于 2013-06-28T18:45:48.677 に答える
0

必要ありenumerateません。要素のインデックスが必要な場合に使用しますが、ここにはありません..

あなたがやりたいと思われることは次のとおりです。

for di in mylist: # for .. in ... : Iterates over the contents of ...
   for elem in di:
      print elem,':', di[elem]

また

for di in mylist:
    print di['firstname'], di['lastname']
于 2013-06-28T18:49:15.977 に答える