Maison  >  Article  >  développement back-end  >  Marquer une liste par les éléments uniques qui apparaissent dans la liste

Marquer une liste par les éléments uniques qui apparaissent dans la liste

PHPz
PHPzavant
2024-02-08 20:57:04504parcourir

Marquer une liste par les éléments uniques qui apparaissent dans la liste

Contenu de la question

À 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é.


Bonne réponse


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  :

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer