如何统计字符串中不同字符的数量(而非出现次数)?
统计字符串中不同字符的数量
最简洁的方法:用集合去重
Python里的集合天然会自动剔除重复元素,把字符串转成集合后,直接取长度就是不同字符的数量:
test_str = "aabbccddee" unique_char_count = len(set(test_str)) print(unique_char_count) # 输出结果:5
原理:set(test_str)会将字符串转换为包含所有不重复字符的集合{'a', 'b', 'c', 'd', 'e'},len()函数直接返回这个集合的元素个数。
用你试过的defaultdict实现
如果想用defaultdict,可以通过遍历字符串记录所有出现过的字符,最后统计字典的键的数量:
from collections import defaultdict test_str = "aabbccddee" char_recorder = defaultdict(int) for char in test_str: char_recorder[char] += 1 # 这里计数只是标记字符存在,数值不重要 unique_char_count = len(char_recorder) print(unique_char_count) # 输出结果:5
也可以不用计数,直接用普通字典标记字符存在:
char_recorder = {} for char in test_str: char_recorder[char] = True # 只要键存在就代表字符出现过 unique_char_count = len(char_recorder)
为什么你之前的尝试没达到预期?
len()直接作用于字符串,统计的是总字符数,不是去重后的数量;count()方法需要指定单个字符,只能统计某一个字符的出现次数,无法直接得到所有不同字符的总数;
内容的提问来源于stack exchange,提问作者Tiến Thành Phạm
相关产品推荐
相关产品推荐

