2011-01-01 13 views
8

私はリスト李を持っている:Pythonの:リスト内の辞書項目のインデックスを取得します

[ 
{name: "Tom", age: 10}, 
{name: "Mark", age: 5}, 
{name: "Pam", age: 7} 
] 

私は特定の名前を持っている項目のインデックスを取得したいです。私は「トム」を求める場合たとえば、それは私を与える必要があります:あなたがする必要がある場合は0、「パムは、」私にあなたがname

people = [ {'name': "Tom", 'age': 10}, {'name': "Mark", 'age': 5} ] 
name_indexer = dict((p['name'], i) for i, p in enumerate(people)) 
name_indexer.get('Tom', -1) 
+1

辞書を使い始めるのは何故ですか? – Keith

答えて

15

を与える必要がありますSatoru.Logicの回答で行われているようにdictを作成する同じリストからこれらの多くを参照してください。

25
>>> from operator import itemgetter 
>>> map(itemgetter('name'), li).index('Tom') 
0 
>>> map(itemgetter('name'), li).index('Pam') 
2 

によってインデックスdictsをしてもよい2.

+1

+1、私はこれを知らなかった。私は、この問題は、 'itemgetter'のようなライブラリ関数を持つことはあまりにも簡単であり、常にdict項目をループしていると仮定していました:D – 0xc0de

+0

python3では、リストをラップしてインデックスメソッドを提供する必要があるようです –

関連する問題