Compte tenu de ces 2 listesÉlimine dups et somme termes correspondants dans les listes
L2 = [A,B,C,D,A,B]
L3 = [3,2,1,2,2,1]
Je veux obtenir
L2_WANTED = [A,B,C,D]
L3_WANTED = [5,3,1,2]
Les listes sont toujours commandés et même taille et les éléments correspondent comme paires de valeurs clés, par exemple A : 3, B: 2 et ainsi de suite.
L'objectif est d'éliminer les doublons dans L2 et de sommer les termes correspondants dans L3 pour obtenir une nouvelle liste avec des paires correspondantes. Cela permet de conserver une liste courante d'éléments lorsqu'ils sont ajoutés aux listes.
J'ai essayé d'écrire une fonction avec index
mais elle a commencé à devenir moche. J'ai vérifié itertools
mais je n'ai rien trouvé de pertinent; J'ai regardé starmap()
mais je ne pouvais pas le faire fonctionner. Probablement cela peut être fait avec la compréhension de la liste aussi bien. J'apprécierais n'importe quels indices ou directions sur la façon d'accomplir cette manière la plus simple. Je vous remercie.
modifier
@SimonC:
>>> l2_sum = {}
>>> for i in range(0, len(L2)):
key = L2[i]
num = L3[i]
l2_sum[key] = l2_sum.get(key, 0) + num
>>> l2_sum
{'A': 5, 'C': 1, 'B': 3, 'D': 2}
>>>
Comment cela élimine les dupes et ajoutez les chiffres? Pouvez-vous donner un indice? Merci.
Cela me semble élégant! Merci beaucoup. – Zeynel
Je n'essaie pas d'être inflammatoire, mais je pense que ma réponse est légèrement plus claire dans son intention. Même si c'est peut-être parce que je viens d'un contexte plus procédural et que la programmation fonctionnelle me fait mal à la tête ... – SimonC
Merci. Oui je suis d'accord. J'ai juste eu l'occasion de le regarder et j'ai édité ma question si vous voulez jeter un coup d'oeil. – Zeynel