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

前端 未结 7 2017
情书的邮戳
情书的邮戳 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:23

    My solution with 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))
    

    More traditional form

    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)
    

    And last one

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

提交回复
热议问题