2016-01-12 4 views
6

के भीतर निहित टुपल्स और शब्दकोश मैं एक सूची में से एक विशिष्ट शब्दकोश प्राप्त करने की कोशिश कर रहा हूं जिसमें टुपल्स और शब्दकोश दोनों शामिल हैं। नीचे दी गई सूची से कुंजी 'के' के साथ शब्दकोश को वापस करने के बारे में मैं कैसे जाउंगा?सूची

lst = [('apple', 1), ('banana', 2), {'k': [1,2,3]}, {'l': [4,5,6]}] 

उत्तर

7

अपने

lst = [('apple', 1), ('banana', 2), {'k': [1,2,3]}, {'l': [4,5,6]}] 

next(elem for elem in lst if isinstance(elem, dict) and 'k' in elem) 

रिटर्न

का उपयोग कर के लिए
{'k': [1, 2, 3]} 

यानी आप की पहली वस्तु आर सूची जो एक शब्दकोश है और इसमें 'के' है।

यह StopIteration बढ़ाता है यदि कोई ऐसी वस्तु नहीं मिली है। अगर आप कुछ और वापस करना चाहते हैं, उदा। None, इस का उपयोग करें:

next((elem for elem in lst if isinstance(elem, dict) and 'k' in elem), None) 
6
def return_dict(lst): 
    for item in lst: 
     if isinstance(item,dict) and 'k' in item: 
      return item 
    raise Exception("Item not found") 
0

आप अपने कोड मैं सूची के माध्यम से पुनरावृति और प्रत्येक तत्व की जाँच करेगा में एक सा बदसूरत जा रहा है कोई आपत्ति नहीं है। उदाहरण:

def find_dict(lst): 
    for element in lst: 
     if type(element) == dict: 
      if 'k' in element.keys(): 
       return element 

शायद इसके लिए एक और पाइथोनिक तरीका होना चाहिए।

+1

ने इसे बहुत लंबा टाइप किया .. टीमप्रोबबल जीत! – Skirrebattie