简介 INTRODUCTION

包括字典排序、列表排序、升序、降序、逆序

一、基础概念

我们知道python中的内建序列包括字典、列表、元组、字符串等,序列是python中最基本的数据结构。

列表、元组、字符串这类的序列的索引默认第一个元素的索引从0开始,第二个元素的索引是1,依次是2、3、4...

字典的索引则直接由键来决定值,键可以是字符串、元组、数字,依次对应到相应的值。例如:dic1={"老刘":"刘金玉",33:"123",(2,3,4):"老王"},如果想要获取“刘金玉”这个值,那么只需要写dic1["老刘"]即可。

二、排序:

排序使用得函数往往是sorted,这个函数使用后返回,这个函数我们只需要了解三个参数,我们就可以解决日常的排序问题。

列表的排序

举例:

列表是

list1=[4,22,5,7,3,2,723,88]

使用

sorted(list1)

排序后默认得到升序的结果[2, 3, 4, 5, 7, 22, 88, 723]

这类的sorted函数时候后,直接返回一个列表,可以再使用一个变量来存储这个排序后得返回结果。

如果想要降序,那么可以使用reverse参数为True即可,代码如下:

sorted(list1,reverse=True)

其实还有一个函数是用作逆序输出,就是reversed函数,这个函数会返回一个对象,如果要转为列表,必须使用list函数进行转换。

以下代码逆序返回一个对象:

reversed(list1)

对象的结果显示一个内存的位置,

转为列表后的代码如下:

list(reversed(list1))

逆序输出的结果为:[88, 723, 2, 3, 7, 5, 22, 4]

此外,还有一种复杂列表的排序,列表举例代码如下:

person=[("老刘","程序员",40),("老张","服务员",30),("老李","警察",50)]

这个复杂列表的排序,需要结合lambda表达式来针对相应的值进行比较排序。

list6asc=sorted(person,key=lambda person:person[2])

排序结果为:[('老李', '警察', 50), ('老刘', '程序员', 40), ('老张', '服务员', 30)]

其实这里更重要的根本是采用sorted函数中的key参数传值进去。这里使用第三个位置的年龄进行比较排序。默认情况下以升序排序。如果想要降序,就添加reverse参数。

list6asc=sorted(person,key=lambda person:person[2],reverse=True)

2、字典的排序

假设字典是这样的:

dic1={"d2":40,"d1":30,"d3":50}

对字典的排序有两种主要的方式。

第一种:使用键的方式。

dic2asc=sorted(dic1,key=dic1.__getitem__)

dic2asc的结果为['d1', 'd2', 'd3'],从这里可以看出,我们的__getitem__魔法属性出入的都是字典的键。

那么,我们知道字典的键后,再想知道对应的值,就很好办了,我们就直接遍历一下吧。

for k in dic2asc:

print(k+" "+str(dic1[k]))

pass

输出结果为:

d1 30

d2 40

d3 50

当然,如果想要降序,同样还是使用reverse参数设置为True,这里注意,True的首字母一定要大写,很多同学喜欢小写。在Python中的变量名称是区分大小写的。

第二种:使用items方法对字典整体排序输出

这种方法还是要结合lambda表达式来一起使用,使用起来也很方便。

dic4asc=sorted(dic1.items(),key=lambda dic1:dic1[1])

现在如果想要降序,我想应该不用多说了吧。但以上代码输出的结果是一个列表。[('d3', 50), ('d2', 40), ('d1', 30)]

如果想要把这个列表转为字典,可以通过

dict(dic4asc)

进行转换,非常方便!转换后的结果如下:

{'d3': 50, 'd2': 40, 'd1': 30}

三、本教程源码

list1=[7,2,5,88,33,55,66]

#升序排序,从小到大

list2asc=sorted(list1)

print("升序结果:")

print(list2asc)

#降序排序,从大到小

print("降序结果:")

list3desc=sorted(list1,reverse=True)

print(list3desc)

#逆序输出

print("逆序输出")

list4rev=reversed(list1)

print(list(list4rev))

#复杂列表

print("复杂列表排序输出")

list5=[["老刘",40],["老王",30],["老张",50]]

#升降序需要使用key,这个key是sorted函数中的参数

list6asc=sorted(list5,key=lambda list5:list5[1])

print(list6asc)

list7desc=sorted(list5,key=lambda list5:list5[1],reverse=True)

print(list7desc)

#字典的排序

dic1={"d2":40,"d1":30,"d3":50}

dic2asc=sorted(dic1,key=dic1.__getitem__)

print(dic2asc)

for k in dic2asc:

print(k+" "+str(dic1[k]))

pass

#字典的降序输出

dic3desc=sorted(dic1,key=dic1.__getitem__,reverse=True)

print(dic3desc)

for k in dic3desc:

print(k+" "+str(dic1[k]))

pass

#使用items方法来对字典排序

dic4asc=sorted(dic1.items(),key=lambda dic1:dic1[1])

print(dic4asc)

#使用降序

dic4asc=sorted(dic1.items(),key=lambda dic1:dic1[1],reverse=True)

print(dic4asc)

#转为字典

print(dict(dic4asc))

输出结果:

升序结果:

[2, 5, 7, 33, 55, 66, 88]

降序结果:

[88, 66, 55, 33, 7, 5, 2]

逆序输出

[66, 55, 33, 88, 5, 2, 7]

复杂列表排序输出

[['老王', 30], ['老刘', 40], ['老张', 50]]

[['老张', 50], ['老刘', 40], ['老王', 30]]

['d1', 'd2', 'd3']

d1 30

d2 40

d3 50

['d3', 'd2', 'd1']

d3 50

d2 40

d1 30

[('d1', 30), ('d2', 40), ('d3', 50)]

[('d3', 50), ('d2', 40), ('d1', 30)]

{'d3': 50, 'd2': 40, 'd1': 30}

进程已结束,退出代码0

更多精彩,欢迎关注微信公众号:编程创造城市

python五种常见的排序方法是_python中序列的排序,sorted方法、reversed方法的使用...相关推荐

  1. python升序和降序排序_python中序列的排序,包括字典排序、列表排序、升序、降序、逆序...

    一.基础概念 我们知道python中的内建序列包括字典.列表.元组.字符串等,序列是python中最基本的数据结构. 列表.元组.字符串这类的序列的索引默认第一个元素的索引从0开始,第二个元素的索引是 ...

  2. python五种常见的排序方法是_常见的经典的排序方法的实现(Python)

    常见的经典算法的实现 首先来一张图,这张图总结了常见的几种排序算法的时间复杂度和空间复杂度的对比.现对常见的几种算法进行实现,以备后需.图片来源:专知 1. 快速排序 思路 先寻找一个基准数,然后接下 ...

  3. Python五种常见的算法,你都了解么

    https://www.toutiao.com/a6641867428684890638/ 2019-01-02 19:57:48 欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资 ...

  4. python列表方法图解_python中list(列表)的使用方法总结(图文)

    本篇文章给大家带来的内容是关于python中list(列表)的使用方法总结(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.list(列表)是一种有序的集合,可以随时添加. ...

  5. Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

    Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...

  6. 五种常见户外LED显示屏模组故障维修方法

    户外LED显示屏在使用的过程中,难免会出现坏灯.局部黑屏等想象,一般是由于LED显示屏模组上面出现了问题.这里有户外LED显示屏全面指南.以下是小编为您列举常见的5类户外LED显示屏模组故障及解决办法 ...

  7. 五种常见的PHP设计模式

    2019独角兽企业重金招聘Python工程师标准>>> 五种常见的PHP设计模式 设计模式 一书将设计模式引入软件社区,该书的作者是 Erich Gamma.Richard Helm ...

  8. Ajax 和 XML: 五种常见 Ajax 模式

    Asynchronous JavaScript + XML(Ajax)无疑是 2006 年最热门的技术术语,且有望在 2007 得到进一步发展.但是对您的应用程序来说它究竟有什么意义呢?Ajax 应用 ...

  9. python五种可视化工具及六道常见面试题

    2017-12-26  吊炸天的  [Python五种可视化工具] 在 Python 中,将数据可视化有多种选择,正是因为这种多样性,何时选用何种方案才变得极具挑战性.本文包含了一些较为流行的工具以及 ...

最新文章

  1. 语义分割--Pixel Deconvolutional Networks
  2. .gitignore 无效及解决办法
  3. 数组中查找某个元素是否存在
  4. java中执行cmd命令_如何通过Java执行cmd命令
  5. caffe配置中的一些问题
  6. javascript的全局变量
  7. SAP Spartacus 和 SmartEdit 集成的一些 bug
  8. 蛮力法在求解凸包问题中的应用(JAVA)
  9. PyTorch 1.0 中文文档:torch.utils.checkpoint
  10. 怎么回滚版本_Win 10 暂停更新及回滚方法
  11. 怎么使用java初始化链表_Java链表基本操作和Java.util.ArrayList
  12. no tests ran in 0.03 seconds
  13. 超文本标签语言html的主要特点,福建教师招考整理:超文本标记语言(HTML)
  14. iOS APP适配iPhone X全屏
  15. Grpc学习之map变量
  16. 书论82 宋曹《书法约言》
  17. KVM管理平台选型与开源企业级虚拟化平台oVirt详解
  18. i am freshman
  19. Git remote: error: this exceeds file size limit of 100.0 MB
  20. Sequelize 中文API文档

热门文章

  1. 【职场和发展】职业期望是指一个人对某种职业的渴求和向往
  2. 十年•杭研技术秀 | “网易云存储服务”从0到1发展之路
  3. ProtoBuf详解(一)概念和语法
  4. Java基础教程-05-面向对象
  5. Perl面向对象(2):对象
  6. 安卓修改软件安装时间_安卓11正式发布
  7. 基于 JavaSwing 的招生信息管理系统的实现
  8. 饭店点菜系统部分代码展示(简历用)
  9. 一阶电路中的时间常数_rc电路时间常数的定义及计算
  10. 左移运算符重载(C++)