J'ai deux listes de longueur égales J'aimerais regrouper la première liste en fonction de la deuxième liste. C'est-à-dire que le groupe doit être le même pour le X = 2,3 car les listes y correspondantes sont identiques. Le regroupement doit donc générer p> quel est le moyen le plus simple d'y parvenir? P> p>
3 Réponses :
x = [1,2,3] y = [[7],[8,9],[8,9]] output = [] values = [] for i, v in zip(x,y): if v in values: output[values.index(v)].append(i) else: output.append([i]) values.append(v)
Je pense que le moyen le plus simple de le faire consiste à utiliser un dictionnaire.
Vous pouvez utiliser une représentation de chaîne de y code> elements comme clé
et associé x code> éléments sous forme de valeurs:
Utiliser : = code> pourrait faire la compréhension de la liste dans Python 3.8:
x = [1, [2], 3]
y = [[7], [8, 9], [8, 9]]
a = iter(x)
z = [[tmp for j in range(len(i)) if (tmp := next(a, None))] for i in y]
# [[1], [[2], 3], []]
output = [i for i in z if i] # remove [] in the list.
# [[1], [[2], 3]]
Veuillez coller votre sortie souhaitée pour une meilleure clarification
J'ai édité la représentation
Que se passera-t-il si la quantité d'élément dans le
x code> plus grande que la quantité d'élément dans
y code>?
Les deux seront de longueur égale
Comment avez-vous décidé que la sortie n'est pas
[[1], [2,3], [2,3]] code>?
J'aimerais regrouper selon la deuxième liste, fondamentalement, les deux listes peuvent être considérées comme une carte, de la première liste à la seconde, de sorte que le regroupement est sur les valeurs.
La première liste contient-elle uniquement des entiers?
Non, cela peut également contenir d'autres listes imbriquées également, j'ai mis à jour une représentation