前言

面试题:如何统计数组中出现次数最多的数据,按出现次数由大到小排序

这个排序看似简单,涉及到的基础知识点还是很多的,真正写起来并不容易

备注:本篇是以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

python笔记17-字典如何按value排序的更多相关文章

  1. Python笔记之字典循环

    Python笔记之字典循环   1.问题 Python是一门比较好入门的编程语言,但是入门简单,当然坑也是有的,今天就来介绍一个我遇到的坑吧,也是很简单的一个,就是当时脑子有点转不过弯来了. 先看代码 ...

  2. Python笔记4——字典的一些基本操作

    #字典 key-value #添加 my_family= {"father": "weihaiqing", "mother": " ...

  3. python笔记-dict字典的方法2

    #!/usr/bin/env python #-*- coding:utf-8 -*- ''' 概述: 使用键值(key-value)存储,具有极快的查找速度 注意:字典是无序的 key的特性: 1. ...

  4. python笔记-dict字典的方法

    #!/usr/bin/env python #-*- coding:utf-8 -*- #打印0001-9999的数字 for i in range(9999): s = "%04d&quo ...

  5. python笔记17

    1.今日内容 迭代器(3*) 生成器(4*) 装饰器(5*) 项目结构 logging模块 2.内容回顾 & 作业 2.1 内容回顾 2.1.1 函数(内置/自定义) 基本函数结构 def f ...

  6. Python笔记:字典的fromkeys方法创建的初始value同内存地址问题

    dict中的fromkeys()函数可以通过一个list来创建一个用同一初始value的dict. d = dict.fromkeys(["苹果", "菠萝"] ...

  7. Python笔记 #17# Pandas: Merge

    10 Minutes to pandas Concat df = pd.DataFrame(np.random.randn(10, 4)) print(df) # break it into piec ...

  8. python list按字典的key值排序

    方法1: result_list = sorted(origin_list, key=lambda e: e.__getitem__('order_key')) 方法2: import operato ...

  9. Python强化训练笔记(四)——字典的排序

    假如有学生成绩以字典顺序排列:{'Tom': 87, 'Jack': 90, 'Rose': 100.....} 想要根据学生的成绩来进行排序,可以考虑使用sorted函数.但是sorted函数用在字 ...

随机推荐

  1. 使用Nginx代理Django

    一.准备环境 检查python版本以及pip版本 [root@linux-node01 src]# python --version Python 2.7.5 [root@linux-node01 s ...

  2. 深度学习方法(九):自然语言处理中的Attention Model注意力模型

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.NET/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 上一篇博文深度学习方法(八):Enc ...

  3. day4 使用yield实现单线程

    一.yield生成器(yield) yield用来结束while循环,并且能够保持之前循环的状态,下一次调用的时候直接从yield开始执行,执行yield后面的程序,并且重新进行循环:另外,yield ...

  4. Linux的shell终端常用快捷键

    参考: http://www.360doc.com/content/17/0627/09/44797135_666854802.shtml https://linux.cn/article-5660- ...

  5. Redis实战配置(三)

    程序配置 我们安装好了Redis的系统服务,此时Redis服务已经运行. 现在我们需要让我们的程序能正确读取到Redis服务地址等一系列的配置信息,首先,需要在Web.config文件中添加如下信息: ...

  6. mysql中行转列与列传行的问题

    行转列: 使用cross join 的方式 使用case-when的方式 列转行: SELECT user_name, REPLACE ( substring_index(mobile, ',', a ...

  7. 【ASP.NET】编写自己的Web服务器

    自己写一个简单的Web服务器,对加深理解Http协议有很好的帮助,下面就看一下一个基于TcpListener的Web服务器: class Program { static void Main(stri ...

  8. 转:在 Ubuntu 上使用 Nginx 部署 Flask 应用

    转:http://Python.jobbole.com/84286/ 原文出处: Vladik   译文出处:开源中国    我职业生涯的大部分都在使用微软的架构,最近我决定走出技术的舒适区,步入开源 ...

  9. Codeforces 722C(并查集 + 思维)

    本文链接:http://www.cnblogs.com/Ash-ly/p/5932712.html 题目链接:http://codeforces.com/problemset/problem/722/ ...

  10. IntelliJ 、Pycharm、webstorm 2017 注册码及注册服务器

    jetbrains 家的东西都非常好看,但是价格贵的令人发指,所以我搭建了一个 Pycharm激活服务器,可以用来激活 Pycharm,IntelliJ IDEA,WebStorm.避免频繁更换激活码 ...