Trovare un elemento in una lista di tuple

Ho un elenco di ‘un’

a= [(1,2),(1,4),(3,5),(5,7)]

Ho bisogno di trovare tutte le tuple per un numero particolare. dire per 1 sarà

result = [(1,2),(1,4)]

Come devo fare?

InformationsquelleAutor Bruce | 2010-02-03

 

10 Replies
  1. 204

    Se si desidera solo il primo numero di partita che si può fare in questo modo:

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

    Se siete alla ricerca di tuple con 1 in loro:

    [item for item in a if 1 in item]
  2. 102

    C’è in realtà un modo intelligente di fare ciò che è utile per una lista di tuple in cui la dimensione di ogni tupla è 2: è possibile convertire la vostra lista in un unico dizionario.

    Per esempio,

    test = [("hi", 1), ("there", 2)]
    test = dict(test)
    print test["hi"] # prints 1
    • Come si applica questo a Bruce problema?
    • Buona risposta (anche se forse non per questa domanda). Ha funzionato bene per me stabilire se un valore è stato in un elenco di tuple (ad esempio, se “hi” in prova)
    • Davvero non rispondere alla domanda, come MagicLAMP suggerisce. In particolare, dict(X) converte X in un dizionario in cui l’ultima tupla di qualsiasi comune primo elemento, è il valore che viene utilizzato. Nell’esempio del por, questo sarebbe il ritorno (1,4) rispetto sia a (1,2) e (1,4).
  3. 20

    Leggere su List Comprehensions

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

    Anche leggere fino generatore di funzioni e il yield istruzione.

    def filter_value( someList, value ):
        for x, y in someList:
            if x == value :
                yield x,y
    
    result= list( filter_value( a, 1 ) )
    • if x == 1 dovrebbe essere if x == value
  4. 1

    Utilizzando la funzione di filtro:

    >>> def get_values(iterables, key_to_find):
    tornare elenco(filtro(lambda x:key_to_find in x, iterables)) >>> un = [(1,2),(1,4),(3,5),(5,7)] >>> get_values(a, 1) >>> [(1, 2), (1, 4)]
  5. 1

    O takewhile, ( oltre a questo, l’esempio più valori è mostrato in figura ):

    >>> a= [(1,2),(1,4),(3,5),(5,7),(0,2)]
    >>> import itertools
    >>> list(itertools.takewhile(lambda x: x[0]==1,a))
    [(1, 2), (1, 4)]
    >>> 

    se indifferenziati, come:

    >>> a= [(1,2),(3,5),(1,4),(5,7)]
    >>> import itertools
    >>> list(itertools.takewhile(lambda x: x[0]==1,sorted(a,key=lambda x: x[0]==1)))
    [(1, 2), (1, 4)]
    >>> 
  6. 0

    Il filter funzione può anche fornire una soluzione interessante:

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

    che cerca le tuple in lista per qualsiasi occorrenza di 1. Se la ricerca è limitata al primo elemento, la soluzione può essere modificato in:

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

    se si desidera cercare una tupla per ogni numero che è presente in tupla quindi è possibile utilizzare

    a= [(1,2),(1,4),(3,5),(5,7)]
    i=1
    result=[]
    for j in a:
        if i in j:
            result.append(j)
    
    print(result)

    È inoltre possibile utilizzare if i==j[0] or i==j[index] se si desidera cercare un numero in particolare l’indice di

Lascia un commento