2010-02-03 10 views

Respuesta

149

Si lo que desea es el primer número que coincide con que puede hacerlo de esta manera:

[item for item in a if item[0] == 1] 

Si sólo están buscando tuplas con 1 en ellos:

[item for item in a if 1 in item] 
+12

Ah, lista por comprensión. – HelloGoodbye

15

leer sobre List Comprehensions

[ (x,y) for x, y in a if x == 1 ] 

también leer hasta generator functions y la yield declaración.

def filter_value(someList, value): 
    for x, y in someList: 
     if x == value : 
      yield x,y 

result= list(filter_value(a, 1)) 
+0

'si x == 1' debe ser' si x == valor' – sambha

4
for item in a: 
    if 1 in item: 
     print item 
7
[tup for tup in a if tup[0] == 1] 
73

realidad, hay una forma inteligente de hacer esto que es útil para cualquier lista de tuplas, donde el tamaño de cada tupla es de 2: usted puede convertir su lista en un único diccionario.

Por ejemplo,

test = [("hi", 1), ("there", 2)] 
test = dict(test) 
print test["hi"] # prints 1 
+6

¿Cómo se aplica esto al problema de Bruce? – HelloGoodbye

+1

Buena respuesta (aunque posiblemente no sea para esta pregunta). Funcionó bien para mí para determinar si un valor estaba en una lista de tuplas de elección (por ejemplo, si "hola" en la prueba) – MagicLAMP

+4

Realmente no responde la pregunta, como sugiere MagicLAMP. Específicamente, 'dict (X)' convierte X en un diccionario donde la última tupla de cualquier primer elemento común es el valor que se usa. En el ejemplo de OP, esto devolvería (1,4) en oposición a ambos (1,2) y (1,4). – BBischof

0

La función filter también puede proporcionar una solución interesante:

result = list(filter(lambda x: x.count(1) > 0, a)) 

que busca en las tuplas en la lista para cualquier aparición de 1. Si la búsqueda se limita al primer elemento, la solución puede ser modificado en:

result = list(filter(lambda x: x[0] == 1, a)) 
0

Usando la función de filtro:

>>> def get_values(iterables, key_to_find):
return list(filter(lambda x:key_to_find in x, iterables)) >>> a = [(1,2),(1,4),(3,5),(5,7)] >>> get_values(a, 1) >>> [(1, 2), (1, 4)]
Cuestiones relacionadas