一、实现思路

需要统计字符串中每个字母出现的次数;如果字母是第一次出现的话,就把次数置为1,如果字母非第一次出现的话,就需要在原字母已保存次数上加1;仔细思考一下,需要保存字母和出现次数,然后相同字母出现多次的话,需要在原字母保存的次数加1;字典这种数据类型可以实现这种需求。

二、代码实现

2.1 统计字母出现次数

统计字符串每个字母出现次数源码:

def count_each_char(str):
    dict = {}
    for i in str:
        if i not in dict:
            dict[i] = 1
        else:
            dict[i] += 1
    return dict

if __name__ == "__main__":
    res = count_each_char("abdefdcsdf")
    print(res)

简化版统计字符串字母出现次数源码:

dict[i] 表示的是字典中字母对应的value(出现次数)
dict.get(i,0)+1 表示的是从字典获取字母,如果字典中没有查找到对应字母,则将字母i,次数1存入字典

def count_each_char(str):
    dict = {}
    for i in str:
        dict[i]=dict.get(i,0)+1
    return dict

运行结果:

2.2 按字母出现次数排序

根据字母出现次数倒序排列源码:

def count_each_char_sort_value(str):
    dict = {}
    for i in str:
        dict[i] = dict.get(i, 0) + 1
    
    # sorted 方法会生成一个排序好的容器
    # operator.itemgetter(1)  获取字典第一维的数据进行排序
    # reverse 表示倒序排列
    dict=sorted(dict.items(),key= operator.itemgetter(1),reverse=True)
    return dict

if __name__ == "__main__":
    res = count_each_char_sort_value("abdefdcsdf")
    print(res)

运行结果:

从运行结果可以看出,通过调用sorted方法,已经根据指定的key进行倒序排序了

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐