zoukankan      html  css  js  c++  java
  • python笔记17-字典如何按value排序

    前言

    面试题:如何统计数组中出现次数最多的数据,按出现次数由大到小排序
    这个排序看似简单,涉及到的基础知识点还是很多的,真正写起来并不容易

    备注:本篇是以python3.6讲解的,python2会多一个cmp参数,cmp函数在python3上已经丢弃了
    cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
    

    保存数据

    1.首先应该提出队列里面有多少个数据,做去重处理,去重最快的办法计算用到set集合了

    a = ["a", "b", "a", "c", "a", "c", "b", "d", "e", "c", "a", "c"]
    
    # set集合去重
    duixiang = set(a)  # 先去重,取出计数对象
    print(duixiang)
    

    2.然后计算每个对象再list里面出现的次数,可以保存为字典格式,一一对应

    # 保存为dict,一一对应
    d = {}
    for i in duixiang:
        d[i] = a.count(i)
    

    字典按value排序

    1.保存为字典后,按字典的value值大小排序,这个才是本题的难点,由于dict是无序的,所以只能用list去排序,把dict的key和value保存为tuplue对象

    # 对字典按value排序
    a = sorted(d.items(), key=lambda x: x[1], reverse=True)
    print(a)
    
    

    参考代码:

    # coding:utf-8
    
    # 作者:上海-悠悠
    a = ["a", "b", "a", "c", "a", "c", "b", "d", "e", "c", "a", "c"]
    
    # set集合去重
    duixiang = set(a)  # 先去重,取出计数对象
    
    # 保存为dict,一一对应
    d = {}
    for i in duixiang:
        d[i] = a.count(i)
    
    
    # 对字典按value排序
    a = sorted(d.items(), key=lambda x: x[1], reverse=True)
    print(a)
    

    python自动化交流 QQ群:779429633

  • 相关阅读:
    如何使用phantomJS来模拟一个HTML元素的鼠标悬停
    nodejs中使用cheerio爬取并解析html网页
    Node.js 动态网页爬取 PhantomJS 使用入门(转)
    一口一口吃掉Hibernate(五)——一对多单向关联映射
    开源 免费 java CMS
    [WinForm]dataGridView导出到EXCEL
    关键帧和动画
    uva 696
    uva 11181
    IE下target获得焦点时存在虚线的问题
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/9147052.html
Copyright © 2011-2022 走看看