À partir d'une liste de chaînes, par exemple :
foo = \['a', 'a', 'b', 'a', 'b', 'c', 'c', 'a', 'b', 'c', 'a'\]
Comment nous les étiquetons pour que le résultat soit :
output = \['a1', 'a2', 'b1', 'a3', 'b2', 'c1', 'c2', 'a4', 'b2', 'c3', 'a5'\]
(Conserver l'ordre original de la liste)
Dans le cas suivant, il n'y a que 3 variables uniques à regarder, donc ma première pensée est de regarder les éléments uniques :
import numpy as np np.unique(foo) Output = \['A', 'B', 'C'\]
Mais lorsque j'essaie de trouver la bonne boucle pour obtenir le résultat souhaité, je reste bloqué.
En utilisant du python pur, en utilisant un dictionnaire pour calculer la valeur :
foo = ['a', 'a', 'b', 'a', 'b', 'c', 'c', 'a', 'b', 'c', 'a'] d = {} out = [] for val in foo: d[val] = d.get(val, 0)+1 out.append(f'{val}{d[val]}')
Si vous pouvez utiliser des pandas :
import pandas as pd s = pd.Series(foo) out = s.add(s.groupby(s).cumcount().add(1).astype(str)).tolist()
Sortie : ['a1', 'a2', 'b1', 'a3', 'b2', 'c1', 'c2', 'a4', 'b3', 'c3', 'a5' ]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!