栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python sorted/sort实现多条件排序

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python sorted/sort实现多条件排序

一、sort 和 sorted的方法
  • 列表对象提供了sort()方法支持原地排序,而内置函数sorted()返回新的列表,并不对原列表进行任何修改;
  • sorted()方法可以对列表、元组、字典、range对象等进行排序;
  • 列表的sort()方法和内置函数sorted()都支持可以参数实现复杂排序要求;
二、多条件实现排序(不使用库的做法)
>>> persons = [{'name': 'Dong', 'age': 37, 'height': 170},
           {'name': 'Zhang', 'age': 40, 'height': 172},
           {'name': 'Dong', 'age': 37, 'height': 171},
           {'name': 'Zhang', 'age': 50, 'height': 173},
           {'name': 'Dong', 'age': 43, 'height': 170},
           {'name': 'Zhang', 'age': 40, 'height': 171}]
>>> print(sorted(persons, key=lambda person: (person['name'], -person['age'], -person['height']))		
[{'name': 'Dong', 'age': 43, 'height': 170}, {'name': 'Dong', 'age': 37, 'height': 171}, {'name': 'Dong', 'age': 37, 'height': 170}, {'name': 'Zhang', 'age': 50, 'height': 173}, {'name': 'Zhang', 'age': 40, 'height': 172}, {'name': 'Zhang', 'age': 40, 'height': 171}]
  • key=lambda person: (person[‘name’], -person[‘age’], -person[‘height’])
    默认升序,‘-’表示降序;
  • 按名称升序排序,名称相同的,则按年龄降序排序,年龄相同的,再按升高降序排序
>>> persons.sort(key=lambda person: (person['name'], -person['age'], -person['height']))
>>> print(persons)
[{'name': 'Dong', 'age': 43, 'height': 170}, {'name': 'Dong', 'age': 37, 'height': 171}, {'name': 'Dong', 'age': 37, 'height': 170}, {'name': 'Zhang', 'age': 50, 'height': 173}, {'name': 'Zhang', 'age': 40, 'height': 172}, {'name': 'Zhang', 'age': 40, 'height': 171}]

persons内元素的顺序已经排序后的结果,地址不发生改变;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/859050.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号