时间:2021-05-22
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_keydef 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 0arr.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 使用多属性来进行排序,希望对大家有所帮助,如果大家有任何疑问欢迎给大家留言,小编会及时回复大家的!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
多属性排序:把需要排序的属性拿出来作为一个tuple,主要的放前面,次要的放后面。假如某对象有n个属性,那么先按某规则对属性a进行排序,在属性a相等的情况下再按
排序,是许多编程语言中经常出现的问题。同样的,在Python中,如何是实现排序呢?(以下排序都是基于列表来实现)一、使用Python内置函数进行排序Python
本文实例讲述了python使用sorted函数对列表进行排序的方法。分享给大家供大家参考。具体如下:python提供了sorted函数用于对列表进行排序,并且可
黑五高峰季近在眼前。为了推动卖家更有效地使用多属性物品刊登,确保物品有不错的曝光率,eBay更新了刊登多属性物品时的刊登验证。本次更新是针对澳洲站,在更新实施后
在python3的sorted中去掉了cmp参数,转而推荐“key+lambda”的方式来排序。如果需要对python的list进行多级排序。有如下的数据:li