怎样遍历一个list  符合下列条件

1. 按照元组的第一个从小到大排序
2. 如果第一个相同 则按照元组第2个从大到小 排序
a = [[2,3],[4,1],(2,8),(2,1),(3,4)]
b = sorted(a,key=lambda x: (x[0], -x[1]))
print b a = [[2,{'a':8}],[4,{'a':1}],(2,{'a':8}),(2,{'a':1}),(3,{'a':4})]
array = [7,8]
def fun(x):
return (-x[0],x[1].get('a'))
b = sorted(a,key=fun)
print b 性能这玩意还是要用数据说话
import time n = xrange(1000000)
x = zip(n, n) start = time.time()
x.sort(key = lambda x: (x[0], -x[1]))
end = time.time()
print 'key', end-start x = zip(n, n)
start = time.time()
x.sort(cmp=lambda x, y: x[0] - y[0] or y[1] - x[1])
end = time.time()
print 'cmp', end-start
输出: key 2.34500002861 cmp 0.269000053406 key的代码确实优雅些,但不管从直观上,还是实测结果,都看不出来key更快。
如果逆序不能前面加个 '-' 来解决 , 可以用下面的办法 例如: 排序的是个字符串
class Reversinator(object):
def __init__(self, obj):
self.obj = obj
def __lt__(self, other):
return other.obj < self.obj a = [(2,'3'),(4,'1'),(2,'8'),(2,'1'),(3,'4')] print sorted(a, key=lambda x: (x[0], Reversinator(x[1])))
补充:
Python本身提供了排序功能,其排序算法是稳定的,即key相等的两项在排序后的先后次序不变
下面通过list.sort来演示一下如何通过key函数来进行自定义的排序
所谓的key函数,就是以参加排序的每一项作为输入,而输出则为用来排序的key #python list 排序 def my_key1(x): return x % 10 aList = [4, 5, 1, 2, 12, 34, 56, 9 ,80] aList.sort() #默认按升序排列 print(aList) aList.sort(reverse = True) #按降序排列 print(aList) aList.sort(key = my_key1) #根据key函数,按照个位数进行升序排列 print(aList) def my_key2(x): return x[1] aList = [(4,'ab'), (56,'c'), (1,'bb'), (102, 'a')] aList.sort(key = my_key2) #按照每个元组的第2分量,即字符串排序 print(aList)

  

python 排序 sorted 如果第一个条件 相同 则按第二个条件排序的更多相关文章

  1. Python成长之路第一篇(4)_if,for,while条件语句

    有了以上的基本基础,已经上面写的几个小练习,大家肯定有很多的不满,比如查询为什么查询一次就退出了呢?下面我们来学习条件语句 一.万恶的加号 以前我们在print的时候如果要加上变量都有是使用+来作为连 ...

  2. python中sorted()和set()去重,排序

    前言 在看一个聊天机器人的神经网络模型训练前准备训练数据,需要对训练材料做处理(转化成张量)需要先提炼词干,然后对词干做去重和排序 words = sorted(list(set(words))) 对 ...

  3. python排序 sorted()与list.sort() (转)

    该文章为转载:原文地址为:https://www.cnblogs.com/zuizui1204/p/6422939.html 只要是可迭代对象都可以用sorted . sorted(itrearble ...

  4. python dict sorted 排序

    https://www.cnblogs.com/linyawen/archive/2012/03/15/2398292.html 我们知道Python的内置dictionary数据类型是无序的,通过k ...

  5. python排序sorted与sort比较

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. sorted(iterable,key=None,revers ...

  6. python排序sorted与sort比较 (转)

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. sorted(iterable,key=None,revers ...

  7. python的sorted函数对字典按value进行排序

    场景:词频统计时候,我们往往要对频率进行排序 sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数.其中iterable表示可 ...

  8. 019.Python函数sorted,filter和推导式

    一 sorted函数 sorted(iterable,reverse=False,key=函数) 功能:排序 参数: iterable:可迭代性数据(常用:容器类型数据,range对象,迭代器) re ...

  9. Python中sorted()方法

    Python中sorted()方法的用法 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象.i ...

随机推荐

  1. JQuery攻略(四)事件

    jQuery事件处理,鼠标的单击,双击,悬停,键盘按键,文本动画..... 此章节有 1.1被点击的按钮查找 1.2事件的自动触发 1.3点击之后禁用按钮 1.4鼠标事件 1.5焦点事件 1.6CSS ...

  2. Material Designer的低版本兼容实现(十三)—— ProgressBar

    进度条我们都很常见了,新的设计规范中提出了各式各样的进度条,本篇就会介绍大部分进度条的实现.实现方式和规范的示例图可能略有差异,还是那句话根据具体需求进行改变吧. PS:本文较长 参考文档:http: ...

  3. winform中的TreeView的数据绑定

    #region 绑定TreeView /// <summary> /// 绑定TreeView(利用TreeNode) /// </summary> /// <param ...

  4. SVG 文字居中整理

    一.基于SVG文档的文字居中 text-anchor: middle; //水平方向居中 dominant-baseline: middle; //垂直居中 1.使用内联样式配置居中 <svg ...

  5. HTML5 本地文件操作之FileSystemAPI实例(一)

    文件操作实例整理一 1.请求系统配额类型 console.info(window.TEMPORARY); //0 临时 console.info(window.PERSISTENT); //1 持久 ...

  6. Sicily 1388. Quicksum

    http://soj.me/1388 又一道字符串的水题.... #include <iostream> #include <cstring> using namespace ...

  7. 阿里jstorm和storm区别

    转自:https://www.cnblogs.com/cn-leodream/p/6497277.html 看介绍文档貌似挺好:https://github.com/alibaba/jstorm   ...

  8. 解决Keyboard遮盖输入的几种办法

    一般来说,键盘遮挡主要有这么几种情况,一个是遮住UITextView,还有就是遮住UITextField,一般来说,比较推荐在UIScrollView或者UITableView里加入textfield ...

  9. 8天学通MongoDB——第一天 基础入门(转)

    关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”. 一: 下载 上Mon ...

  10. python3 验证码图片切割

    切割前图片 切割后四个图片 代码 #coding:utf8 import os from PIL import Image,ImageDraw,ImageFile import numpy impor ...