建议37:按需选择sort或sorted
# -*- coding:utf-8 -*-
'''
用法:
sorted(iterable[, cmp[, key[, reverse]]])
s.sort([cmp[, key[, reverse]]]) cmp 为用户定义的任何比较函数,函数的参数为两个可比较的元素(来自iterable 或
者list),函数根据第一个参数与第二个参数的关系依次返回-1、0 或者+1(第一个参
数小于第二个参数则返回负数)。该参数默认值为None。
key 是带一个参数的函数,用来为每个元素提取比较值,默认为None(即直接比较每个元素)。
reverse 表示排序结果是否反转。 sort和 sorted的区别:
1、sorted() 作用于任意可迭代的对象,而sort() 一般作用于列
2、当排序对象为列表的时候,。sorted() 函数会返回一个排序后的列表,原有列表保持不
变;而sort() 函数会直接修改原有列表,函数返回为None。
3、无论是sort() 还是sorted() 函数,传入参数key 比传入参数cmp 效率要高cmp 传入
的函数在整个排序过程中会调用多次,函数开销较大;而key 针对每个元素仅作一次处理,
因此使用key 比使用cmp 效率要高。
'''
#技巧1 对字典进行排序
import operator
phonebook = {'Linda': '', 'Bob': '', 'Carol': ''}
sorted_pb = sorted(phonebook.iteritems(),key=operator.itemgetter(0),reverse=True)
print sorted_pb #技巧2 多维list排序
# 分别表示学生的姓名,成绩,等级
gameresult = [['Bob',95.00,'A'],['Alan',86.0,'C'],['Mandy',82.5,'A'],\
['Rob',86,'E']] # 当第二个字段成绩相同的时候按照等级从低到高排序
sorted_pb = sorted(gameresult , key=operator.itemgetter(2, 1)) #技巧3 字典中混合list 排序
mydict = { 'Li': ['M',7],
'Zhang': ['E',2],
'Wang': ['P',3],
'Du': ['C',2],
'Ma': ['C',9],
'Zhe': ['H',7] }
#针对字典mydict 的value 结构[n,m] 中的m 按照从小到大的顺序排列。
sorted(mydict.iteritems(), key=lambda (k,v): operator.itemgetter(1)(v)) #技巧4 List 中混合字典排序
gameresult = [{ "name":"Bob", "wins":10, "losses":3, "rating":75.00 },
{ "name":"David", "wins":3, "losses":5, "rating ":57.00 },
{ "name":"Carol", "wins":4, "losses":5, "rating ":57.00 },
{ "name":"Patty", "wins":9, "losses":3, "rating ": 71.48 }] #针对list 中的字典元素按照rating 和name进行排序的实现方法。
sorted(gameresult , key=operator.itemgetter("rating","name"))
建议37:按需选择sort或sorted的更多相关文章
- 数据结构 - 只需选择排序(simple selection sort) 详细说明 和 代码(C++)
数据结构 - 只需选择排序(simple selection sort) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28601 ...
- 剑指offer第32题:把数组排成最小的数及关于list.sort()和sorted( Iterable object )函数的相关知识
* 解题思路: * 先将整型数组转换成字符数组,然后将String数组排序,最后将排好序的字符串数组拼接出来.关键就是制定比较规则. * 排序规则如下: * 若ab > ba 则 a & ...
- python中的sort、sorted、reverse、reversed详解
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...
- Python中sort、sorted的cmp参数废弃之后使用cmp_to_key实现类似功能
Python2.1以前的排序比较方法只提供一个cmp比较函数参数,没有__lt__等6个富比较方法, Python 2.1引入了富比较方法,Python3.4之后作废了cmp参数.相应地从Python ...
- 测试对于list的sort与sorted的效率
sorted from time import clock from random import randint start = clock() a = [randint(0,1000000) for ...
- [python学习] 语言基础—排序函数(sort()、sorted()、argsort()函数)
python的内建排序函数有 sort.sorted两个. 1.基础的序列升序排序直接调用sorted()方法即可 ls = list([5, 2, 3, 1, 4]) new_ls = sorted ...
- python sort和sorted的区别以及使用方法
iteralbe指的是能够一次返回它的一个成员的对象.iterable主要包括3类: 第一类是所有的序列类型,比如list(列表).str(字符串).tuple(元组). 第二类是一些非序列类型,比如 ...
- Python中的 sort 和 sorted
今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...
- Python3:排序函数sort() 和 sorted() 之介绍
今天来讲一下Python中的排序函数.Python中有2个内建的排序函数,分别为sort() 和 sorted() 下面介绍分别介绍一下2个函数: 1.有一个列表 :a=[1,4,5,88,0,7], ...
随机推荐
- Xcode中授权普通成员
问题: 在普通用户账户下使用系统的Xcode在编译通过时候会提示” Developer Tools Access“需控制另一进程,需要输入“Developer Tools”组用户名密码才能继续调试 解 ...
- C++ RTTI的应用
先看下方的代码,我们所处的context在<<< void* pX = (void*)pGiven; >>>处,只知道上面这些类的信息和pX指针,怎么判断pX指向对 ...
- CF 617E【莫队求区间异或和】
E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...
- (四)DIH导入结构化数据
(四)DIH导入结构化数据 目前大多数的应用程序将数据存储在关系数据库(如oracle.sql server .mysql等).xml文件中.对这样的数据进行搜索是很常见的应用.所谓的DataImpo ...
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 3)
(三)遍历 文件系统的遍历是指按照文件夹的层级结构遍历文档库.列表的文件夹和列表条目.遍历主要有三种方式:(1)直接使用文件系统对象模型进行遍历:(2)使用SPDocumentLibrary进行遍历: ...
- set集合可以添加重复元素
set集合判断元素的唯一性要重写hashcode和equals方法,这样就能保证不会加入重复的元素, 但是在以下这种情况下任然可以加入重复元素,即使他们的hashcode和equals方法结果相同 p ...
- api xml database 设计一种数据库
w 问题 0-新增和读取,可以忽略更新和删除: 1-被请求方的xml dom结构多层且不定,且未来可能增删某些键(dom节点),且键值长度最值可能无法确定: 3-请求过程可能出现异常exception ...
- Java基础 - 获取随机数
使用方法 package com.demo5; import java.util.Random; /* * 使用步骤: * A:导包 * import java.util.Random; * B:创建 ...
- PHP与ASP转义双引号的区别
PHP: 转义双引号:\" ASP: 转义双引号:"" PHP与ASP转义双引号的区别
- dbUtils 原理
// Jdbc 的增,删, 改流程类似,只是参数不同, 因此可以向上抽取 public class Demo{ // Jdbc 的增加 public void addStu(Stu stu){ Con ...