J'ai une liste « a »Trouver un élément dans une liste de tuples
a= [(1,2),(1,4),(3,5),(5,7)]
Je dois trouver tous les tuples pour un nombre particulier. disons pour 1 ce sera
result = [(1,2),(1,4)]
Comment faire?
J'ai une liste « a »Trouver un élément dans une liste de tuples
a= [(1,2),(1,4),(3,5),(5,7)]
Je dois trouver tous les tuples pour un nombre particulier. disons pour 1 ce sera
result = [(1,2),(1,4)]
Comment faire?
Si vous voulez juste le premier numéro de match que vous pouvez le faire comme ceci:
[item for item in a if item[0] == 1]
Si vous êtes à la recherche d'tuples avec 1 en eux:
[item for item in a if 1 in item]
Lire sur List Comprehensions
[ (x,y) for x, y in a if x == 1 ]
lire également en place generator functions et yield
déclaration.
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' devrait être' if x == value' – sambha
for item in a:
if 1 in item:
print item
[tup for tup in a if tup[0] == 1]
Il est en fait une façon intelligente de faire ce qui est utile pour une liste de tuples où la taille de chaque tuple est 2: vous pouvez convertir votre liste en un seul dictionnaire.
Par exemple,
test = [("hi", 1), ("there", 2)]
test = dict(test)
print test["hi"] # prints 1
Comment l'appliquer au problème de Bruce? – HelloGoodbye
Bonne réponse (mais peut-être pas pour cette question). J'ai bien travaillé pour déterminer si une valeur était dans une liste de tuples de choix (par exemple, si "salut" dans le test) – MagicLAMP
Il ne répond pas vraiment à la question, comme le suggère MagicLAMP. Plus précisément, 'dict (X)' convertit X en un dictionnaire où la dernière ligne d'un premier élément commun est la valeur utilisée. Dans l'exemple de l'OP, cela reviendrait (1,4) par opposition aux deux (1,2) et (1,4). – BBischof
La fonction filter
peut également fournir une solution intéressante:
result = list(filter(lambda x: x.count(1) > 0, a))
qui recherche les tuples dans la liste pour toute occurrence de 1
. Si la recherche est limitée au premier élément, la solution peut être modifiée en:
result = list(filter(lambda x: x[0] == 1, a))
Utilisation de la fonction filtre:
>>> 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)]
Ah, la compréhension de la liste. – HelloGoodbye