@fahamが提供する回答はすばらしい1行ですが、値を含む辞書へのインデックスは返しません。代わりに、辞書自体を返します。簡単な取得方法は次のとおりです。インデックスが複数ある場合は1つ以上のリスト、ない場合は空のリスト。
list = [{'id':'1234','name':'Jason'},
{'id':'2345','name':'Tom'},
{'id':'3456','name':'Art'}]
[i for i, d in enumerate(list) if 'Tom' in d.values()]
出力:
>>> [1]
このアプローチについて私が気に入っているのは、簡単な編集で、インデックスと辞書の両方のリストをタプルとして取得できることです。これは私が解決する必要があった問題であり、これらの答えを見つけました。以下では、別の辞書に重複する値を追加して、それがどのように機能するかを示します。
list = [{'id':'1234','name':'Jason'},
{'id':'2345','name':'Tom'},
{'id':'3456','name':'Art'},
{'id':'4567','name':'Tom'}]
[(i, d) for i, d in enumerate(list) if 'Tom' in d.values()]
出力:
>>> [(1, {'id': '2345', 'name': 'Tom'}), (3, {'id': '4567', 'name': 'Tom'})]
このソリューションは、任意の値に「トム」を含むすべての辞書を検索します。