如何统计字符+数字格式字符串的字符总出现次数,解决字典值覆盖问题
你之前的写法问题在于字典推导式遇到重复键时会直接用后面的值覆盖前面的值,无法完成累加,可参考以下两种实现方式:
方法1:普通字典手动判断累加
data = "a1a3b5a2c4b1" count_dict = {} # 步长为2遍历字符串,依次取字符和对应的次数 for i in range(0, len(data), 2): current_char = data[i] current_num = int(data[i+1]) if current_char in count_dict: count_dict[current_char] += current_num else: count_dict[current_char] = current_num # 按顺序拼接统计结果 result = ''.join([f"{char}{count}" for char, count in count_dict.items()]) print(result)
运行后输出结果为a6b6c4。
方法2:使用defaultdict简化逻辑
借助Python标准库collections的defaultdict可以省略存在性判断,代码更简洁:
from collections import defaultdict data = "a1a3b5a2c4b1" count_dict = defaultdict(int) for i in range(0, len(data), 2): count_dict[data[i]] += int(data[i+1]) result = ''.join(f"{char}{count}" for char, count in count_dict.items()) print(result)
内容的提问来源于stack exchange,提问作者Benjy Bret Barlow
相关产品推荐
相关产品推荐

