Python: Rename duplicates in list with progressive numbers without sorting list

前端 未结 7 2021
情书的邮戳
情书的邮戳 2020-12-13 18:41

Given a list like this:

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

I would like to rename the duplicate

7条回答
  •  不知归路
    2020-12-13 19:31

    A list comprehension version of the Rick Teachey answer, "two-liner":

    from collections import Counter
    
    m = ["name", "state", "name", "city", "name", "zip", "zip"]
    
    d = {a:list(range(1, b+1)) if b>1 else '' for a,b in Counter(m).items()}
    [i+str(d[i].pop(0)) if len(d[i]) else i for i in m]
    #['name1', 'state', 'name2', 'city', 'name3', 'zip1', 'zip2']
    

提交回复
热议问题