0
votes

Comment imprimer uniquement le dernier match en utilisant itertools à Python?

J'ai le code suivant: xxx

IT imprime: xxx

Après avoir ajouté quelques journaux supplémentaires, il semble que le premier élément de p est comparé au premier élément de q , puis premier élément de p avec second élément de q , premier Article de p avec un troisième élément de q etc.

Comment puis-je modifier ce code afin qu'il n'imprimera que le dernier match? Donc, je veux seulement que la sortie a une fois (en raison de la comparaison du premier élément de p et du second élément dans q dans ce cas)


5 commentaires

Êtes-vous empêché de créer et d'accumuler des valeurs dans une liste, puis de les convertir en un ensemble?


Quel est votre code censé faire?


Trouvez-vous des caractères communs entre les deux listes?


Je suis d'accord avec @ Juanpa.arrivillaga qu'il n'a aucun sens de donner des solutions sans connaître votre intention.


[A pour A, B dans IteroTools.Product (P, Q) Si A == B] [- 1]


3 Réponses :


1
votes

Pourquoi ne pas simplement utiliser un ensemble pour trouver des caractères communs entre les deux listes xxx

la sortie sera {'A'}

Ou si vous ne pouvez pas utiliser un ensemble, collectez tous les matchs dans une liste et imprimez le dernier élément xxx

la sortie sera ("A" )


7 commentaires

Pouvez-vous utiliser un ensemble avec intersection avec p (liste des chaînes) et q (liste des dicts et une clé d'un dict correspond à une chaîne de p)?


Oui, un ensemble de p et un ensemble de liste de clés de la dict @dencowboy afin Set (p) et SET (DCT)


J'ai essayé: Imprimer (Set (A) .Intersection (Set (B ['Valeur']))) Mais il est retourné: TypeError: Les indices de liste doivent être des entiers ou des tranches, pas STR


Qu'est-ce que a et B pouvez-vous être plus clair à ce sujet, cela semble également non liée à la question dans la main @Dencowboy


Désolé, je veux dire comme p et q. p est juste comme dans la question originale et q est en fait une liste de dictts comme [{'valeur': 'a'}, {'valeur': 's'}, {'valeur': 't'}]


Oui, le deuxième ensemble sera de la liste [élément de V dans q pour l'élément en v.values ​​()] , où vous collectez toutes les valeurs à partir de q dans une liste et en faites un ensemble @DenCowboy et vous convertissez cette liste en un ensemble et de la comparer à SET (q)


Laissez-nous Continuez cette discussion en chat .



1
votes

Si vous ne pouvez pas vous permettre de tourner p code> et q code> en ensembles d'abord car ils sont exorcitanément importants, vous pouvez ajouter les valeurs déjà assorties à un ensemble comme vous Allez vérifier l'inclusion:

p = ['a','b','c','d']
q = ['a','a','x','y','z']
seen = set([])

for a, b in itertools.product(p, q):
    if a == b and b not in seen:
        print(b)
        seen.add(b)


0 commentaires

-1
votes

Pour ce faire, je voudrais simplement inverser les deux Liste code> S:

a


0 commentaires