python - 如果元素已经存在于列表中,如何用数字增加列表中的字符串

标签 python list

我有一个包含重复元素的字符串列表。我必须重新创建列表,条件是如果字符串已存在于列表中,我需要在字符串末尾附加一个数字。

这是我的 list :

a = ['abc', 'abc', 'h', 'xv', 'xv', 'xv', 'h', 'h', 'h', 'h']

我希望得到以下输出:

['abc', 'abc1', 'h', 'xv', 'xv1', 'xv2', 'h1', 'h2', 'h3', 'h4']

我试着用下面的代码来完成这个:

new = []
for i in a:
    if i in new:
        if i[:-1].isdigit():
            new.append(i + str(int(i[-1]) + 1))
        else:
            new.append(i + '1')
    else:
        new.append(i)

但是我得到:

['abc', 'abc1', 'h', 'xv', 'xv1', 'xv1', 'h1', 'h1', 'h1', 'h1']

但它没有给出正确的结果。如果我能针对这个问题获得列表理解或优化的单行代码,那就太好了。

最佳答案

您可以使用字典来跟踪到目前为止看到的字符串出现的次数。您可以使用列表理解,但我能想到的唯一方法是涉及列表切片和 .count() 或一些 super 骇人听闻的东西,这两种方法都不太理想比下面的一次性实现:

a = ['abc', 'abc', 'h', 'xv', 'xv', 'xv', 'h', 'h', 'h', 'h']
result = []
occurrences = {}

for elem in a:
    if elem in occurrences:
        elem_to_add = elem + str(occurrences[elem])
        occurrences[elem] += 1
    else:
        elem_to_add = elem
        occurrences[elem] = 1
    result.append(elem_to_add)

print(result)

关于python - 如果元素已经存在于列表中,如何用数字增加列表中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70830612/

相关文章:

python - 如何正确缩放 QGraphicsScene

python - 不允许在 Python 中修改列表迭代器?

python - 获取列表中*计数最少的元素

java - 使用二分查找方法查找项目的索引

python - 无法播放 IBM Watson 的 TTS(文本转语音)生成的 WAV 文件

python - Django-为什么使用了ajax后就变成了一个空页面

javascript - 相当于 Python 中的 Javascript "match"

python - 部署到 Heroku 时,如何在 Procfile 中使用 Gunicorn 导入自定义模块?

java - 如何从排序列表中获取第一个元素?

list - 类似映射的函数,在循环中的每次迭代中返回多个值