Lista de Python de la lista recuperar datos

Teniendo tal lista de lista:

data = [['a','x'], ['b','q'], ['c','z']] search = 'c' any(e[0] == search for e in data) 

Esto devuelve un valor booleano, pero ¿qué sucede si quiero recuperar el primer par de variables de búsqueda que aparecen (en otras palabras, quiero recuperar ‘x’ cuando busco ‘a’)?

Puede usar dict(data)['c'] para obtener el segundo valor en el par.

dict(data) crea un diccionario a partir de sus pares. Tenga en cuenta que esto devolverá un solo resultado y no se garantiza que devuelva la primera coincidencia. Pero si realiza muchas búsquedas y sabe que no tiene duplicados, sería más rápido usar un diccionario.

De lo contrario, usa la respuesta de zeekay.

Podrías usar una lista de comprensión en su lugar:

 >>> search = 'a' >>> [item[1] for item in data if item[0] == search] <<< ['x'] 

La parte derecha de la expresión filtra los resultados, de modo que solo se devuelven los elementos en los que el primer elemento es igual al valor de búsqueda.

Si solo necesita la primera aparición, no cree una lista intermedia utilizando una comprensión de lista, ya que esto buscará en toda la lista.

En su lugar, use next() con una expresión generadora, que regresará tan pronto como encuentre una coincidencia:

 >>> next(snd for fst, snd in data if fst == 'a') 'x' 
 >>> data = [['a','x'], ['b','q'], ['c','z']] >>> search = 'c' >>> print [e[1] for e in data if e[0] == search] ['z'] 

Realmente, sin embargo, usted quiere un diccionario:

 >>> datadict = {'a':'x', 'b':'q', 'c':'z'} >>> search = 'c' >>> print datadict[search] z 
 data = [['a','x'], ['b','q'], ['c','z']] search = 'c' for inner_list in data: if search in inner_list: print(inner_list[1])