如何对含数字后缀的重复列表字符串元素求和并去重
解决带数字后缀单词的重复求和问题
问题描述
有一个列表,元素为末尾带有数字的单词,其中存在重复的单词元素。需要对重复单词对应的数字求和,去除重复项后输出带有数字总和的单词。
输入示例
a = ["mango3", "apple2", "kiwi1", "kiwi2", "mango2"]
输出示例
mango5 apple2 kiwi3
实现代码
# 初始化空字典存储单词与对应数字总和 word_total = {} # 遍历输入列表的每个元素 for item in a: # 从后往前拆分单词前缀和数字部分,兼容多位数后缀 split_idx = len(item) for i in range(len(item)-1, -1, -1): if not item[i].isdigit(): split_idx = i + 1 break word = item[:split_idx] num = int(item[split_idx:]) # 更新总和 if word in word_total: word_total[word] += num else: word_total[word] = num # 输出最终结果 for word, total in word_total.items(): print(f"{word}{total}")
代码说明
- 用字典
word_total记录每个单词前缀对应的数字总和,键为单词前缀,值为累加后的数字。 - 从后往前查找第一个非数字字符的位置,确保能正确拆分出单词和数字(包括多位数后缀的情况,比如
orange15这类元素)。 - 根据拆分结果更新字典:单词已存在则累加数字,不存在则初始化总和为当前数字。
- 最后遍历字典,将单词与总和拼接后输出。
内容的提问来源于stack exchange,提问作者luna
相关产品推荐
相关产品推荐

