zoukankan      html  css  js  c++  java
  • Python编程题18统计字母出现次数并排序

    题目

    给定一个列表,列表元素仅包含字母,请统计每个字母的出现次数,并按出现次数排序,要求最终返回结果为字典形式。

    例如:

    给定一个列表:['a', 'a', 'c', 'b', 'd', 'c', 'c', 'c', 'd', 'd']
    返回结果:{"c": 4, "d": 3, "a": 2, "b": 1}

    实现思路1

    • 利用 Python 里的计数器 Counter ,其可用于追踪值的出现次数,并返回一个 Counter 类对象,是字典 dict 的子类
    • 利用 Python 里的内置函数 sorted() 并结合匿名函数 lambda 进行排序,设置 reverse=True 表示降序
    • 把结果转换为字典 dict 形式返回

    注意:sorted() 返回的结果是一个新的列表list ,这里需要转换为字典格式再返回

    代码实现

    # coding=utf-8
    #__author:chenxiaomeng
    #date:2021/11/17
    
    #题目:给定一个列表,列表元素仅包含字母,请统计每个字母的出现次数,并按出现次数排序,要求最终返回结果为字典形式。
    #给定一个列表:['a', 'a', 'c', 'b', 'd', 'c', 'c', 'c', 'd', 'd']
    #返回结果:{"c": 4, "d": 3, "a": 2, "b": 1}
    
    
    from collections import Counter
    def CountNum(str_list):
        temp=Counter(str_list)
        res_list=sorted(temp.items(),key=lambda x:x[1],reverse=True)
        res_dict=dict(res_list)
    
        print(res_dict)
    
    if __name__ == '__main__':
        str_list = ["a", "a", "c", "b", "d", "c", "c", "c", "d", "d"]
        CountNum(str_list)

     

     

    实现思路2

    • #实现方法2:首先将list存为set集合,然后计算set中各元素key的出现次数value保存到字典中,最后根据字典dict的value进行排序。 #set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

    代码实现

    #实现方法2:首先将list存为set集合,然后计算set中各元素key的出现次数value保存到字典中,最后根据字典dict的value进行排序。
    #set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
    
    from collections import Counter
    def CountNum(str_list):
        temp_set=set(str_list)
        print(temp_set)
        temp_dict={item:str_list.count(item) for item in temp_set}
        print(temp_dict)
        res_list=sorted(temp_dict.items(),key=lambda x:x[1],reverse=True)
        res_dict=dict(res_list)
        print(res_dict)
    
    if __name__ == '__main__':
        str_list = ["a", "a", "c", "b", "d", "c", "c", "c", "d", "d"]
        CountNum(str_list)
    
    

     

  • 相关阅读:
    数据结构栈的链式存储(c语言描述)
    Glide相关api
    mac安装WireShark2.0新手教程
    android的布局 (如何实现空心圆效果的布局)
    Android如何设置只有边框背景透明的背景呢?
    failed parsing overlays.
    SVN 报错问题
    关于Fragment的点击切换数据滞留问题
    数据结构(严蔚敏版)思维导图
    【LeetCode】23.合并K个排序链表
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/15567797.html
Copyright © 2011-2022 走看看