Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列,本文详细的介绍了python list.sort()根据多个关键字排序,感兴趣的可以了解一下
目录
前言:
另一用法
sort 与 sorted 区别:
前言:
加入我需要对如下几个文件按照从下到大排序,可是他的关键字有多个应该怎么办了?

例如我希望005开头在006和007的前面,然后005内部我希望12排在15前面

005x12.jpg
006x01.jpg
007x03.jpg
005x15.jpg
007x10.jpg
006x04.jpg

解决方法:
利用list.sort()中的多个关键字排序功能,先按照key1排序,再按照key2排序

  1. list.sort(key=lambda x: (key1, key2))

例如

  1. filename=[005x12.jpg, 006x01.jpg, 007x03.jpg, 005x15.jpg, 007x10.jpg, 006x04.jpg]
  2. filename.sort(key=lambda x: (int(x[2]), int(x[4: -4]))
  3. for i in len(filename):
  4. print(i)

结果如下:

005x12.jpg
005x15.jpg
006x01.jpg
006x04.jpg
007x03.jpg
007x10.jpg

排序完成

另一用法
我需要对a按照正在前,负在后,并且绝对值从小到大排序

  1. a = [4, 2, 1, 3, -1, -8, -3, -2]
  2. a.sort(key=lambda x: (x<0, abs(x)))
  3. print(a)

输出为:

[1, 2, 3, 4, -1, -2, -3, -8]

sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
sorted 语法:

  1. sorted(iterable[, cmp[, key[, reverse]]])

参数说明:

iterable — 可迭代对象。
cmp — 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key — 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse — 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
python的sorted的使用方法:

  1. >>>a = [5,7,6,3,4,1,2]
  2. >>> b = sorted(a) # 保留原列表
  3. >>> a
  4. [5, 7, 6, 3, 4, 1, 2]
  5. >>> b
  6. [1, 2, 3, 4, 5, 6, 7]
  7. >>> L=[('b',2),('a',1),('c',3),('d',4)]
  8. >>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 利用cmp函数
  9. [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
  10. >>> sorted(L, key=lambda x:x[1]) # 利用key
  11. [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
  12. >>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
  13. >>> sorted(students, key=lambda s: s[2]) # 按年龄排序
  14. [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
  15. >>> sorted(students, key=lambda s: s[2], reverse=True) # 按降序
  16. [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

补充点小知识:

1、{{ value|add:10 }} #value =5 则返回15
2、{{ value|add:-10 }} #加一个负数,也相当于减去。
3、{% widthratio 5 1 100 %} #这段代码表示:5/1100,返回500,widthratio需要三个参数,他会使用参数1/参数2参数3

如果要进行乘法操作的话,可将参数1等于参数2即可。

更多相关文章

  1. python3中dict.keys().sort()用不了的解决方法
  2. Python常见内置高阶函数即高阶函数用法
  3. 模拟数组pop,push,toString和冒泡排序(sort的使用)
  4. JS实现冒泡排序
  5. js 实现数组排序 获取最大值,最小值,翻转
  6. js对象模拟数组
  7. JavaScript 实现简单数组排序,翻转,取较大值和较小值
  8. 商城实战项目
  9. MongoDB 排序内存超过 32M 限制

随机推荐

  1. PHP中常用的18个字符串函数
  2. 给 PHP 开启 shmop 扩展实现共享内存
  3. php随机生成不在一个范围随机数
  4. php十进制转二进制不用函数
  5. 在 macOS 下使用 PHP-version 切换 PHP
  6. php生成短网址不重复
  7. PHP高性能Excel扩展1.2.8发布,文件读取数
  8. PHP设置多域名允许跨域访问
  9. php路由有什么好处
  10. PHP调试之ChromePHP