@ फहम द्वारा प्रस्तुत उत्तर एक अच्छा एक लाइनर है, लेकिन यह मूल्य वाले शब्दकोश में सूचकांक वापस नहीं करता है। इसके बजाय यह शब्दकोश को ही लौटाता है। यहाँ प्राप्त करने का एक सरल तरीका है: यदि एक से अधिक हैं, या एक खाली सूची की सूची है, तो एक या एक से अधिक सूचीएँ हैं:
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'})]
यह समाधान उनके सभी मूल्यों में 'टॉम' वाले सभी शब्दकोशों को ढूंढता है।