Python:用渐进式数字重命名列表中的重复项而不对列表进行排序

标签 python list duplicates rename

给定这样的列表:

mylist = ["name", "state", "name", "city", "name", "zip", "zip"]

我想通过附加一个数字来重命名重复项以获得以下结果:

mylist = ["name1", "state", "name2", "city", "name3", "zip1", "zip2"]

我不想更改原始列表的顺序。建议的解决方案 related Stack Overflow question对列表进行排序,我不想这样做。

最佳答案

我使用 maplambda 的解决方案:

print map(lambda x: x[1] + str(mylist[:x[0]].count(x[1]) + 1) if mylist.count(x[1]) > 1 else x[1], enumerate(mylist))

更传统的形式

newlist = []
for i, v in enumerate(mylist):
    totalcount = mylist.count(v)
    count = mylist[:i].count(v)
    newlist.append(v + str(count + 1) if totalcount > 1 else v)

最后一个

[v + str(mylist[:i].count(v) + 1) if mylist.count(v) > 1 else v for i, v in enumerate(mylist)]

关于Python:用渐进式数字重命名列表中的重复项而不对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30650474/

相关文章:

python - 回滚 post_save 接收器中的事务?

list - Prolog:检查某项是否是列表中的最后一项?

python - 检查对象是否为列表的 pythonic 方法是什么?

Java:相当于Python的str.format()

python - 使用 Tornado 进行并行异步请求时捕获异常

python - 有没有办法获取新的YouTube订阅者的电子邮件? python

scala - 验证列表 Scala 中的项目的好方法

mysql - SQL查询仅返回重复项的最大值[duplicate]

php - 如何在codeigniter中查找重复记录

C++ 查找并保存 vector 中的重复项