给定一个这样的列表:
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(使用前将#替换为@)