Python 使用多属性来进行排序

yipeiwu_com6年前Python基础

Python 中 list.sort() 是列表中非常常用的排序函数, key 参数可以对单个属性进行排序。

但是想要实现类似 sql 中 order by id, age 一样,对多个字段进行排序就不支持了。

py2 中 sort() 函数还有个 cmp 参数可以传入一个方法,可以自定义对多个属性进行排序,py3 中移除了这个字段。

py3 想要实现这个功能,需要使用 functools 模块中的方法,实例如下

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)

from functools import cmp_to_key

def cmp_func(a, b):

  if a['id'] < b['id']:
    return -1
  elif a['id'] > b['id']:
    return 1

  if a['name'] < b['name']:
    return -1
  elif a['name'] > b['name']:
    return 1

  return 0

arr.sort(key=cmp_to_key(cmp_func))

上面的例子我们实现了 id 正序排序,如果 id 相同,则按照 age 正序排序

为了方便可以封装成一个方法,以供列表调用,封装的方法 demo 可以参见地址

https://github.com/wxnacy/study/blob/master/python/office_module/list_demo/sort_by_multi_fields.py

总结

以上所述是小编给大家介绍的Python 使用多属性来进行排序,希望对大家有所帮助,如果大家有任何疑问欢迎给大家留言,小编会及时回复大家的!

相关文章

Flask和Django框架中自定义模型类的表名、父类相关问题分析

本文实例分析了Flask和Django框架中自定义模型类的表名、父类相关问题。分享给大家供大家参考,具体如下: 一. Flask和Django中定义表名(执行迁移后生成)的方式和flas...

python实现随机森林random forest的原理及方法

引言 想通过随机森林来获取数据的主要特征 1、理论 随机森林是一个高度灵活的机器学习方法,拥有广泛的应用前景,从市场营销到医疗保健保险。 既可以用来做市场营销模拟的建模,统计客户来源,保...

python框架flask表单实现详解

这篇文章主要介绍了python框架flask表单实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 表单 表单用于注册,修改用户数...

python操作redis方法总结

连接 Redis import redisc 连接方式:redis提供了2个方法 1:StrictRedis:实现大部分官方的命令 2:Redis:是StrictRedis的子类,用于...

python3 实现的人人影视网站自动签到

这是一个自动化程度较高的程序,运行本程序后会从chrome中读取cookies用于登录人人影视签到, 并且会自动添加一个windows 任务计划,这个任务计划每天下午两点会执行本程序进行...