python sorted方法
介绍
sorted方法用来进行排序操作,如数字,字符串组成的list,根据dict类型的key或者value排序,现将平时使用的sorted的方法和数据类型进行整理。
sorted(iterable[, cmp[, key[, reverse]]])"""对一个iterable对象排序,返回一个排序之后的list@param iterable 可迭代遍历对象@param cmp 默认None, 自定义的比较函数,2个参数@param key 默认None, 自定义的函数,1个参数,参数值来源与列表元素@param reverse 默认False(正序)@return 返回一个排序之后的list"""pass
数据类型
首先自定义object用于后续的比较。定义User,包含name和age两个成员变量
class User(object):def __init__(self, name, age):self.name = nameself.age = agedef __repr__(self):return repr((self.name, self.age))
list
以list类型的对象作为待排序数据,其中元素为数字,字符串,元组,object分别给出测试样例。
- 简单类型样例
# -*- coding=utf-8 -*-
from operator import itemgetter, attrgetterdef sort_list():"""关于list类型的排序操作"""# 数值类型test_list = [1, 2, 19, 30]print sorted(test_list)print sorted(test_list, reverse=True)# 字符串类型test_list = ["a", "boy", "named", "marvin"]print sorted(test_list)print sorted(test_list, reverse=True)# tuple类型test_list = [("Up", 0), ("Down", 1), ("Left", 2), ("Right", 3)]# tuple的index=0处值比较,即"Up","Down"等比较print sorted(test_list, key=lambda item: item[0])# tuple的index=1处值比较,即0,1等比较print sorted(test_list, key=lambda item: item[1])# tuple的index=1处值比较,itemgetter获取元素1号位置print sorted(test_list, key=itemgetter(1))
- object类型示例
def sort_list_obj():"""object组成的list排序"""# 根据User的属性name的值排序# attrgetter获取元素的属性值test_list = [User("James", 30), User("Marvin", 28), User("Parke", 40), User("Li", 40)]print sorted(test_list, key=lambda user: user.name)print sorted(test_list, key=attrgetter("name"))# 根据User的属性age的值排序print sorted(test_list, key=lambda user: user.age)print sorted(test_list, key=attrgetter("age"))# 先根据age排序,再根据name排序print sorted(test_list, key=attrgetter("age", "name"))if __name__ == "__main__":print "list sort test.\n--------------------"sort_list()print "list of object test.\n--------------------"sort_list_obj()
- 输出结果
list sort test.
--------------------
[1, 2, 19, 30]
[30, 19, 2, 1]
['a', 'boy', 'marvin', 'named']
['named', 'marvin', 'boy', 'a']
[('Down', 1), ('Left', 2), ('Right', 3), ('Up', 0)]
[('Up', 0), ('Down', 1), ('Left', 2), ('Right', 3)]
[('Up', 0), ('Down', 1), ('Left', 2), ('Right', 3)]list of object test.
--------------------
[('James', 30), ('Li', 40), ('Marvin', 28), ('Parke', 40)]
[('James', 30), ('Li', 40), ('Marvin', 28), ('Parke', 40)]
[('Marvin', 28), ('James', 30), ('Parke', 40), ('Li', 40)]
[('Marvin', 28), ('James', 30), ('Parke', 40), ('Li', 40)]
[('Marvin', 28), ('James', 30), ('Li', 40), ('Parke', 40)]
dict
以dict类型的对象作为待排序数据,其中元素为数字,字符串,元组,对象分别给出测试样例。
- 简单对象示例
def sort_map():"""map类型的排序操作"""# 数值类型test_map = {1: "a", 2: "boy", 3: "named", 4: "marvin"}print sorted(test_map)print sorted(test_map.values())# 根据value排序print sorted(test_map.items(), key=lambda item: item[1])# 根据key排序print sorted(test_map.items(), key=lambda item: item[0], reverse=True)# tuple类型test_map = {1: ("Up", 0), 2: ("Down", 1), 3: ("Left", 2), 4: ("Right", 3)}print sorted(test_map.items(), key=lambda item: item[1][0])
- object对象示例
def sort_dict_obj():"""object组成的dict的value排序"""test_map = {1: User("James", 30), 2: User("Marvin", 28), 3: User("Parke", 40), 4: User("Li", 79)}# 根据value的age排序print sorted(test_map.items(), key=lambda item: item[1].age)# 根据value的name排序print sorted(test_map.items(), key=lambda item: item[1].name)# 根据key排序print sorted(test_map.items(), key=lambda item: item[0])print sorted(test_map.items(), key=itemgetter(0))# 根据value的age对values排序print sorted(test_map.values(), key=lambda item: attrgetter("age"))if __name__ == "__main__":print "map sort test\n--------------------"sort_map()print "dict of object test. \n--------------------"sort_dict_obj()
- 输出结果
map sort test
--------------------
[1, 2, 3, 4]
['a', 'boy', 'marvin', 'named']
[(1, 'a'), (2, 'boy'), (4, 'marvin'), (3, 'named')]
[(4, 'marvin'), (3, 'named'), (2, 'boy'), (1, 'a')]
[(2, ('Down', 1)), (3, ('Left', 2)), (4, ('Right', 3)), (1, ('Up', 0))]dict of object test.
--------------------
[(2, ('Marvin', 28)), (1, ('James', 30)), (3, ('Parke', 40)), (4, ('Li', 79))]
[(1, ('James', 30)), (4, ('Li', 79)), (2, ('Marvin', 28)), (3, ('Parke', 40))]
[(1, ('James', 30)), (2, ('Marvin', 28)), (3, ('Parke', 40)), (4, ('Li', 79))]
[(1, ('James', 30)), (2, ('Marvin', 28)), (3, ('Parke', 40)), (4, ('Li', 79))]
[('James', 30), ('Marvin', 28), ('Parke', 40), ('Li', 79)]
参考文献
python-2.7.14-docs -> Built-in Functions -> sorted()
python sorted方法相关推荐
- python中sorted_Python中sorted()方法的用法
Python中sorted()方法的用法 2012-12-24 22:01:14| 分类: Python |字号 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对itera ...
- python排序方法sorted和list.sort()使用讲解
python排序方法sorted和list.sort使用讲解 前言 一.排序函数的算法原理 二.sorted()和List.sort()使用方法讲解 1.sorted()函数使用方法 2.List.S ...
- python中sorted用法_Python中sorted()方法的用法
1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象.iterable主要包括3类: 第一类是所有 ...
- Python sorted() 函数
sorted 函数是 Python 中的内置函数,作用是对所有可迭代的对象进行排序. sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进 ...
- python sorted原理_Python sort()和sorted()
Python sort()和sorted() sort 与 sorted 区别: sort() sort()是列表list的方法之一 L.sort(key=None, reverse=False) s ...
- 23-26 Python File方法、OS文件/目录方法、异常处理、内置函数
23Python File方法 23.1open()方法 Python open()方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数.如果该文件无法被打开,会抛出OSEr ...
- Python dic 方法汇总
python]dictionary方法说明 Operation Result Notes len(a) the number of items in a 得到字典中元素的个数 a[k] the ite ...
- DEMATEL-ISM模型的Python实现——方法介绍以及代码复现
DEMATEL-ISM模型的Python实现--方法介绍以及代码复现 前言 DEMATEL-ISM分析方法 方法简介 步骤 明确系统要素 确定直接影响矩阵 规范影响矩阵 计算综合影响矩阵 计算各个要素 ...
- python sorted原理_深入理解Python的sorted
1. 简介 sorted的派排序功能真强大,从前一直使用C++.Java以为其功能很强大了,但与Python一比,真的要差一些. 2. 函数定义 sorted(iterable, cmp=None, ...
- Python ljust()方法
描述 Python ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串.如果指定的长度小于原字符串的长度则返回原字符串. 语法 ljust()方法语法: str.ljust ...
最新文章
- dbms_rowid包的BUG问题
- scala-04For与Function进阶实战、Lazy的使用
- 求伯君:向暴雪学习 金山不求一夜暴富
- linux8系统安装总结,硬盘安装Ubuntu 8.04经验总结(图)
- Android studio怎么配置javadoc生成项目API
- MAC启动redis的目录
- jq上传file到php,jQuery文件上传
- 软件“美不美”,UI测试一下就知道
- 【博客美化】09.评论带头像,且支持旋转
- python学习笔记(十二)python操作redis
- idea连接Mysql报错
- iframe 父页面 子页面互相取值调用
- 三个箭头循环标志_摩托车6年免检,应该如何通过APP申请免检检验标志?
- 达摩院最新突破:新型量子芯片操控精度99.72%创新高
- maven+scala和java_maven打包scala+java工程
- 基于vlmcsd搭建KMS服务器
- 需求分析之矩阵分析法
- 使用 RSA 算法进行加解密,签名和验签
- 从0到1的电商架构应该怎么做?有哪些坑?
- android 百度地图3.0定位,百度地图定位功能实现v3_0_0