给定一个字符串列表,例如:
foo = ['A', 'A', 'B', 'A', 'B', 'C', 'C', 'A', 'B', 'C', 'A']
我们如何标记它们以便输出为:
输出 = ['A1', 'A2', 'B1', 'A3', 'B2', 'C1', 'C2', 'A4', 'B2', 'C3', 'A5'] (保持原列表顺序)
在下面的例子中,只有 3 个唯一的变量需要查看,所以我首先想到的是查看唯一的元素:
将 numpy 导入为 np
np.unique(foo)
输出 = ['A', 'B', 'C']
但是当我试图找到合适的循环来达到所需的输出时,我就会陷入困境。
使用纯Python,利用字典来计算值:
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]}')
如果你可以使用pandas:
import pandas as pd
s = pd.Series(foo)
out = s.add(s.groupby(s).cumcount().add(1).astype(str)).tolist()
输出:
['A1', 'A2', 'B1', 'A3', 'B2', 'C1', 'C2', 'A4', 'B3', 'C3', 'A5']