Jawaban yang ditawarkan oleh @faham bagus sekali, tetapi tidak mengembalikan indeks ke kamus yang berisi nilai. Sebaliknya ia mengembalikan kamus itu sendiri. Berikut ini cara sederhana untuk mendapatkannya: Daftar indeks satu atau lebih jika ada lebih dari satu, atau daftar kosong jika tidak ada:
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()]
Keluaran:
>>> [1]
Yang saya sukai dari pendekatan ini adalah bahwa dengan edit sederhana Anda bisa mendapatkan daftar indeks dan kamus sebagai tupel. Ini adalah masalah yang saya butuhkan untuk menyelesaikan dan menemukan jawaban ini. Berikut ini, saya menambahkan nilai duplikat di kamus yang berbeda untuk menunjukkan cara kerjanya:
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()]
Keluaran:
>>> [(1, {'id': '2345', 'name': 'Tom'}), (3, {'id': '4567', 'name': 'Tom'})]
Solusi ini menemukan semua kamus yang mengandung 'Tom' dalam nilai mereka.