2016-01-12 24 views
6

Sto cercando di ottenere un dizionario specifico all'interno di un elenco che contiene sia tuple che dizionari. Come dovrei tornare a restituire il dizionario con la chiave "k" dalla lista qui sotto?Tuple e dizionari contenuti in un elenco

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

risposta

7

Per la vostra

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

utilizzando

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

rendimenti

{'k': [1, 2, 3]} 

vale a dire il primo oggetto di voi r elenco che è un dizionario e contiene la chiave 'k'.

Questo solleva StopIteration se non viene trovato alcun oggetto di questo tipo. Se vuoi restituire qualcos'altro, ad es. None, utilizzare questo:

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

Se non vi dispiace essere un po 'brutto nel codice avrei scorrere la lista e verificare ogni elemento. Esempio:

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

Ci dovrebbe essere un modo più pitioso per questo probabilmente.

+1

Abbiamo impiegato troppo tempo a digitare questo .. teamProbable vince! – Skirrebattie

Problemi correlati