Heim >Backend-Entwicklung >Python-Tutorial >Markieren Sie eine Liste anhand der eindeutigen Elemente, die in der Liste erscheinen

Markieren Sie eine Liste anhand der eindeutigen Elemente, die in der Liste erscheinen

PHPz
PHPznach vorne
2024-02-08 20:57:04510Durchsuche

Markieren Sie eine Liste anhand der eindeutigen Elemente, die in der Liste erscheinen

Frageninhalt

Angenommen eine Liste von Zeichenfolgen, zum Beispiel:

foo = \['a', 'a', 'b', 'a', 'b', 'c', 'c', 'a', 'b', 'c', 'a'\]

Wie wir sie kennzeichnen, sodass die Ausgabe lautet:

output = \['a1', 'a2', 'b1', 'a3', 'b2', 'c1', 'c2', 'a4', 'b2', 'c3', 'a5'\]

(Originalreihenfolge der Liste beibehalten)

Im folgenden Fall müssen nur drei eindeutige Variablen betrachtet werden, daher ist mein erster Gedanke, die eindeutigen Elemente zu betrachten:

import numpy as np

np.unique(foo)

Output = \['A', 'B', 'C'\]

Aber wenn ich versuche, die richtige Schleife zu finden, um die gewünschte Ausgabe zu erzielen, stecke ich fest.


Richtige Antwort


Verwenden Sie reines Python und verwenden Sie ein Wörterbuch, um den Wert zu berechnen:

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]}')

Wenn Sie verwenden können:

import pandas as pd

s = pd.Series(foo)
out = s.add(s.groupby(s).cumcount().add(1).astype(str)).tolist()

Ausgabe: ['a1', 'a2', 'b1', 'a3', 'b2', 'c1', 'c2', 'a4', 'b3', 'c3', 'a5' ]

Das obige ist der detaillierte Inhalt vonMarkieren Sie eine Liste anhand der eindeutigen Elemente, die in der Liste erscheinen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen