
给定一个字符串列表,例如:
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'\]
但是当我试图找到合适的循环来达到所需的输出时,我就会陷入困境。
主要更新介绍: 完美整合Discuz!论坛,实现一站式登陆、退出、注册; 同步所有会员资料; 新增购物车功能,商品购买更加方便、快捷; 新增部分快捷菜单,网站访问更加方便; 限制首页商品、店铺标题显示长度; 修正会员后台管理不能更改密码的错误; 完善商品显示页面所有功能链接; 修正后台标签管理部分错误; 修正前台学校列表不按后台顺序显示的错误; 修正搜索功能中学校名称过长导致显示紊乱的现象; 修正
正确答案
使用纯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' ]









