卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章34308本站已运行393

按照列表中出现的唯一元素来标记列表

按照列表中出现的唯一元素来标记列表

问题内容

给定一个字符串列表,例如:

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

我们如何标记它们以使输出为:

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

(保持原列表顺序)

在以下情况下,只有 3 个唯一变量需要查看,因此我首先想到的是查看唯一元素:

import numpy as np

np.unique(foo)

Output = ['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' ]

卓越飞翔博客
上一篇: 我有几个结构相同的 JSON。他们的对象是对象数组。如何将这些数组附加到一个数组中?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏