Python内置函数sorted()高级排序用法

可以结合Python内置函数sorted()从入门到精通来看一些稍微基础的排序用法。

>>> from operator import itemgetter

>>> gameresult = [['Bob', 95.0, 'A'],

['Alan', 86.0, 'C'],

['Mandy', 83.5, 'A'],

['Rob', 89.3, 'E']]

#按子列表第3个元素进行升序排序

>>> sorted(gameresult, key=itemgetter(2))

[['Bob', 95.0, 'A'], ['Mandy', 83.5, 'A'], ['Alan', 86.0, 'C'], ['Rob', 89.3, 'E']]

#按第3个元素升序,然后按第1个升序

>>> sorted(gameresult, key=itemgetter(2, 0))

[['Bob', 95.0, 'A'], ['Mandy', 83.5, 'A'], ['Alan', 86.0, 'C'], ['Rob', 89.3, 'E']]

>>> sorted(gameresult, key=itemgetter(2, 0), reverse=True)

[['Rob', 89.3, 'E'], ['Alan', 86.0, 'C'], ['Mandy', 83.5, 'A'], ['Bob', 95.0, 'A']]

>>> gameresult = [{'name':'Bob', 'wins':10, 'losses':3, 'rating':75.0},

{'name':'David', 'wins':3, 'losses':5, 'rating':57.0},

{'name':'Carol', 'wins':4, 'losses':5, 'rating':57.0},

{'name':'Patty', 'wins':9, 'losses':3, 'rating':72.8}]

#按’wins’升序,该值相同的按’name’升序排序

>>> sorted(gameresult, key=itemgetter('wins', 'name'))

[{'wins': 3, 'rating': 57.0, 'name': 'David', 'losses': 5}, {'wins': 4, 'rating': 57.0, 'name': 'Carol', 'losses': 5}, {'wins': 9, 'rating': 72.8, 'name': 'Patty', 'losses': 3}, {'wins': 10, 'rating': 75.0, 'name': 'Bob', 'losses': 3}]

#以一个列表内容为依据,对另一个列表内容进行排序

>>> list1 = ["what", "I'm", "sorting", "by"]

>>> list2 = ["something", "else", "to", "sort"]

#把两个列表中的对应位置元素配对

>>> pairs = zip(list1, list2)

>>> [item[1] for item in sorted(pairs, key=lambda x:x[0], reverse=True)]

['something', 'to', 'sort', 'else']

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2017-03-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏mathor

并查集(Union Find)

 没想到有一天我也能搞懂并查集,orz......实际上本文算是《Algorithms》一书的读后感

22910
来自专栏小怪聊职场

爬虫课程(四)|深度优先和广度优先算法

79840
来自专栏小红豆的数据分析

小蛇学python(18)pandas的数据聚合与分组计算

对数据集进行分组并对各组应用一个函数,这是数据分析工作的重要环节。在将数据集准备好之后,通常的任务就是计算分组统计或生成透视表。pandas提供了一个高效的gr...

29320
来自专栏小樱的经验随笔

深入理解树状数组

树状数组(Binary Indexed Tree(BIT), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之...

27470
来自专栏程序员互动联盟

【专业技术】Android平台下使用OpenGL

存在问题: 安卓平台下如何使用opengl? 解决方案: 1、GLSurfaceView GLSurfaceView是Android应用程序中实现OpenGl画...

39660
来自专栏IT 指南者专栏

Python 从入门到入门基础练习十五题

微信公众号:compassblog 欢迎关注、转发,互相学习,共同进步! 有任何问题,请后台留言联系! ? 1、永远的 HelloWorld print("He...

1K70
来自专栏小樱的经验随笔

洛谷 P1876 开灯(思维,枚举,规律题)

P1876 开灯 题目背景 该题的题目是不是感到很眼熟呢? 事实上,如果你懂的方法,该题的代码简直不能再短。 但是如果你不懂得呢?那。。。(自己去想) 题目描述...

30660
来自专栏机器学习算法与Python学习

Torch7基本教程2

上一篇博文Torch7深度学习教程1详细的讲述了Torch7的安装过程,本篇博文主要是讲述一下Torch7中的一些基本运算的语法,与Python的基本语法类似,...

39460
来自专栏小樱的经验随笔

详解斯坦纳点及斯坦纳树及模版归纳总结

①什么是斯坦纳点?   假设原来已经给定了个点,库朗等指出需要引进的点数至多为,此种点称为斯坦纳点。过每一斯坦纳点,至多有三条边通过。若为三条边,则它们两两交成...

89860
来自专栏数据结构与算法

1226 倒水问题

1226 倒水问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有两个无刻...

29160

扫码关注云+社区

领取腾讯云代金券