Trouver la correspondance des valeurs dans une liste de listes à l'aide de python
Je suis en train de parcourir une liste de listes en python 2.7.5 et le retour de ces où la première valeur est trouvée dans une seconde liste, quelque chose comme ceci:
#python 2.7.5
list1 = ['aa', 'ab', 'bb', 'bc', 'cc']
list2 = [['aa', 1, 3, 7],['de', 2, 2, 1],['bc', 3, 4, 4]]
list3 = []
for x in list1:
for y in list2:
if x == y:
list3.append(y)
Donc je voudrais list3 pour contenir [['aa',1,3,7],['bc', 3, 4, 4]]
mais au lieu de cela je viens d'obtenir l'ensemble de la liste 2.
- Hein? Il ne vous donnera pas l'ensemble de
list2
, ça vous donne une liste vide. Veuillez vérifier à nouveau le code. - Est-il une raison spécifique de la deuxième structure doit être une liste de listes au lieu de, disons, un seul dict?
- Dans ce cas, je pense qu'il serait utile de nous dire ce que vous voulez atteindre avec votre programme/script (pas seulement le bout de code). Parce que sur un premier coup d'oeil, je dirais qu'il existe de meilleures structures de données pour résoudre votre problème (comme les dicts)
- Ce pourrait être les devoirs.
InformationsquelleAutor TimStuart | 2013-09-22
Vous devez vous connecter pour publier un commentaire.
Essayer une approche plus simple qui est plus proche de ce que vous voulez:
Vous avez besoin
e[0]
depuislist2
est une liste de listes. Vous pouvez également écrire une seule ligne à l'aide de la filtre() la fonction:ou à l'aide de compréhension de liste:
Il y a juste un bug dans votre code. Vous avez besoin de x == y[0] au lieu de x == y. La dernière est la comparaison d'une chaîne à une liste.
Vous pouvez également utiliser des interprétations de la liste
Il ressemble à votre question est parce que vous tentez de comparer une liste d'éléments dans une liste d'une liste d'éléments.
Si vous entrez par la
for
boucle, vous verrez que sur votre première itération de la comparaison de'aa'
contre['aa', 1, 3, 7]
, qui n'est probablement pas ce que vous voulez faire.Si vous êtes juste de comparer le premier élément, vous aurez besoin de changer votre
for
boucle: