• 算法试题


    题目

     找出一个序列中出现频率最高的三个数

    解析

    思路一

    创建一个新字典, k 为 序列的值, 然后 v 的初始值 0, 然后循环序列进行计数, 

    然后进行新字典的处理..... 

    不行, 不好处理了. 此思路不行

    思路二

    利用 colletctions 的 Counter 模块, 内部有个方法可以解决 k 值问题

    答案

    答案一

    可以往下继续实现, 但是有点麻烦了

    li = [2, 5, 3, 4, 1, 8, 1, 2, 6, 6, 1, 5, 1, 5]
    
    d = dict.fromkeys(li, 0)
    print(d)  # {2: 0, 5: 0, 3: 0, 4: 0, 1: 0, 8: 0, 6: 0}
    
    for i in li:
        d[i] += 1
    
    print(d)  # {2: 2, 5: 3, 3: 1, 4: 1, 1: 4, 8: 1, 6: 2}
    """
    .......
    """

    答案二

    简单方便

    from collections import Counter
    
    li = [2, 5, 3, 4, 1, 8, 1, 2, 6, 6, 1, 5, 1, 5]
    
    c = Counter(li)
    print(c)  # Counter({1: 4, 5: 3, 2: 2, 6: 2, 3: 1, 4: 1, 8: 1})
    
    print(c.most_common(3))  # [(1, 4), (5, 3), (2, 2)]
  • 相关阅读:
    jsp数据交互二
    jsp数据交互(一)
    JQuery操作DOM
    事件和动画
    Jquery选择器
    Optional容器(jdk1.8)
    java常见集合笔记
    字符串内存占用图解
    单例设计模式
    代码块
  • 原文地址:https://www.cnblogs.com/shijieli/p/10863433.html
Copyright © 2020-2023  润新知