python2排序

python list cmp排序

对于list的排序一般使用cmp

示例:

sorted(xxlist, cmp=self.sortFunc)
def sortFunc(self, a, b):
    return a - b

返回值代表的顺序和lua与C#是一致的,可见我之前的博客《c#_sort排序函数的返回值 - 赵青青 - 博客园 (cnblogs.com)

含义
小于零 left在right的前面
位置不变
大于零 right在left的前面

不过python3丢弃掉这这种用法了


对python dict排序

python中对dict排序一般有两种方法:

  1. 使用lambda
  2. 使用itemgetter

lambda排序

list中的元素是个dict

list.sort(cmp=lambda x,y: cmp(x.get('rank'), y.get('rank')))

Itemgetter对dict的多个key排序

from operator import itemgetter
record_data_list = [ record for record in record_data.values() if record.get('role', '') ]
record_data.sort(key=itemgetter('kill', 'dmg', 'heal'), reverse=True)	# 按击杀, 伤害到治疗排名

可以使用 Itemgetter 代替 lambda 函数来实现类似的功能。输出方式与 sorted() 和 lambda 相同,但内部实现不同。它获取字典的键并将它们转换为元组。它减少了开销,速度更快,效率更高。必须导入“运算符”模块才能正常工作(from operator import itemgetter)

  • 性能:itemgetter 在时间上下文中比 lambda 函数表现更好。
  • 简洁: :在访问多个值时,itemgetter 看起来比 lambda 函数更简洁。

Ways to sort list of dictionaries by values in Python – Using itemgetter - GeeksforGeeks


排在最前面

对于想把某个数排在最前面,我建议不要用排序了,直接从列表中删除它,再往首位添加才是最快的。


posted @ 2021-12-09 20:10  赵青青  阅读(95)  评论(0编辑  收藏  举报