gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:45:58 24 4
gpt4 key购买 nike

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

这是我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com