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

2024-03-11

给定一个这样的列表:

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

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

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

我不想更改原始列表的顺序。为此建议的解决方案相关的堆栈溢出问题 https://stackoverflow.com/q/17202444/259538对列表进行排序,这是我不想做的。


我的解决方案是map and lambda:

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)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:使用渐进数字重命名列表中的重复项,而不对列表进行排序 的相关文章

随机推荐