0
votes

Itération sur les listes d'une série pour trouver des éléments similaires dans la liste dans Python

J'ai une série telle que: xxx pré>

Je veux imprimer les éléments communs dans une liste p> xxx pré>

. 'd aime savoir quelle identité ils faisaient partie de
Sortie: P>

b: 1,2
c: 1,2,3
d: 1,2,3
e: 1,2


2 commentaires

1) formater votre entrée de manière appropriée; 2) Postez votre code initial


Pouvez-vous fournir plus de détails ou d'exemples? c et d apparaît dans chaque liste, mais b et e seulement dans 2 sur 3, donc ce n'est pas clair dans Quelle quantité de liste différente donnée doit sembler vous intéresser. Disons que nous avons 100 listes, sera un élément apparaissant dans 2 listes intéressants pour vous ou non? Si ce n'est pas combien d'apparences dont vous avez besoin?


3 Réponses :


0
votes

Bienvenue sur Stackoverflow.

Si je comprends votre problème, vous pouvez tirer parti d'un defaultDict pour ceci: xxx

sorties: xxx

Est-ce que cela répond à votre question?


2 commentaires

Je pense que vous avez besoin d'un niveau de boucle de plus pour obtenir les personnages individuels.


Il a dit «des articles communs», je suppose une liste et je comparais ses articles. Si comparer des caractères moniques dans des éléments de chaîne, corrigez une troisième boucle sur chaque caractère de la chaîne d'élément est requise.



1
votes

Si vous créez un dictionnaire mappant les index sur des listes de caractères, vous pouvez obtenir les deux parties de votre réponse: xxx

d sera un dictionnaire comme: < / p> xxx

éléments qui apparaissent dans plusieurs listes sont trouvés en regardant: xxx

Vous pouvez indexer directement dans la dicte Pour trouver les index, ils font partie de: xxx


0 commentaires

1
votes

Essayons une approche de comptage, car nous voulons une bonne complexité du temps.

b: [1, 2]
c: [1, 2, 3]
d: [1, 2, 3]
e: [1, 2]


1 commentaires

Quelques notes: 1) Vous n'avez presque jamais besoin d'incrémenter manuellement un champ d'identification comme ça. Il suffit de faire la boucle pour list_id, lst in énumumerate ([l1, l2, l3], 1): et vous pouvez supprimer l'initialisation explicite de list_id sur 0 et l'incrément explicite à la fin de chaque boucle. 2) N'utilisez pas Bare sauf s; Vous vous attendez à un KeyError , attrape uniquement que vous n'ignorez pas typeError S, clavierInterrupter s, etc. ou simplement utiliser un collections.defaultDict (liste) Vous n'avez donc pas besoin de Essayez / sauf du tout et peut simplement faire de manière inconditionnelle compter [caractère] .append (list_id) .