2011-06-29 20 views

Respuesta

24

Indice la lista y luego el dict.

print L[1]['d'] 
5

Usted no ha proporcionado suficiente contexto para proporcionar una respuesta precisa (es decir, ¿cómo quiere gestionar claves idénticas en múltiples predice?)

Una respuesta es iterar la lista, y tratar de conseguir 'd'

mylist = [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'e': 5, 'f': 6}] 
myvalues = [i['d'] for i in mylist if 'd' in i] 

Otra respuesta es acceder a la dict directamente (por el índice de la lista), aunque hay que saber que la clave está presente

mylist[1]['d'] 
+0

gracias señor .. – Vinodh

+4

@raja: No hay necesidad de agradecerme, y especialmente no es necesario que me llame señor! :) Recuerde votar las respuestas que considere útiles. –

5

Si sabe qué dict en la lista tiene la llave que está buscando, entonces ya tiene la solución (presentada por Matt e Ignacio). Sin embargo, si usted no sabe lo que tiene dict esta tecla, entonces se podría hacer esto:

def getValueOf(k, L): 
    for d in L: 
     if k in d: 
      return d[k] 
+1

Corregir 'si k entra en d:' a 'si k en d:' –

+0

@Artsiom: Buena captura – inspectorG4dget

+0

de nada –

12

En primer lugar no utilice 'lista' como nombre de la variable.

Si tiene diccionarios simples con claves únicas a continuación, puede hacer lo siguiente (nótese que se creará nuevo objeto diccionario con todos los elementos de sub-diccionarios):

res = {} 
for line in listOfDicts: 
    res.update(line) 
res['d'] 
>>> 4 

lo contrario:

getValues = lambda key,inputData: [subVal[key] for subVal in inputData if key in subVal] 
getValues('d', listOfDicts) 
>>> [4] 

o muy Base:

def get_value(listOfDicts, key): 
    for subVal in listOfDicts: 
     if key in subVal: 
      return subVal[key] 
+0

de nada, raja –

+1

¿Y por qué downvote? ¿Estoy haciendo algo mal? –

+3

+1 para "' no use 'list' como nombre de variable' " –

Cuestiones relacionadas