Python:统计字典嵌套字符串列表字符频率并返回各键最高频字符
统计字典嵌套列表中各键对应出现次数最多的字符
给定初始字典:
res = {0: ['a', 'a', 'b'], 1: ['e'], 2: ['i', 'x', 'i', 'c']}
期望处理后得到每个键对应出现次数最多的字符:
{0: 'a', 1: 'e', 2: 'i'}
解决方案:使用collections.Counter
Python标准库的Counter可以快速统计字符频率,结合most_common()方法直接获取出现次数最多的字符:
from collections import Counter res = {0: ['a', 'a', 'b'], 1: ['e'], 2: ['i', 'x', 'i', 'c']} for k, v in res.items(): # 统计列表内字符频率,提取出现次数最多的第一个字符 res[k] = Counter(v).most_common(1)[0][0] print(res) # 输出: {0: 'a', 1: 'e', 2: 'i'}
代码说明
Counter(v)将输入列表转换为计数器对象,键是字符,值是对应出现次数most_common(1)返回一个包含元组的列表,元组格式为(字符, 出现次数),取第一个元素就是出现次数最多的字符信息- 通过
[0][0]从元组中提取出目标字符
可选:处理平局情况
如果某个列表存在多个出现次数相同的高频字符(比如['a','b','a','b']),most_common(1)会返回列表中最先出现的那个字符。如果需要返回所有高频字符,可以修改代码:
from collections import Counter res = {0: ['a','b','a','b'], 1: ['e'], 2: ['i', 'x', 'i', 'c']} for k, v in res.items(): count = Counter(v) max_count = max(count.values()) # 收集所有出现次数等于最大值的字符 res[k] = [char for char, cnt in count.items() if cnt == max_count] print(res) # 输出: {0: ['a', 'b'], 1: ['e'], 2: ['i']}
内容的提问来源于stack exchange,提问作者L10B
相关产品推荐
相关产品推荐

