当前位置: 首页 > article >正文

python中的排序函数sorted

      在python中对列表进行排序是使用很频繁的操作,一般采用sorted函数或自带的成员函数sort就可以搞定。但是,sorted函数本身功能非常强大,可以对字符串长度、字典键值进行排序。使用下面的代码,可以更进一步的学习掌握。

# 对列表进行排序(字符串采用字母顺序排序)
fruits = ["apple", "banana", "cherry", "date"]
result = sorted(fruits)
print(result)  # 输出 ['apple', 'banana', 'cherry', 'date']

# 根据字符串长度进行排序
result = sorted(fruits, key=lambda x: len(x))
print(result)  # 输出 ['date', 'apple', 'banana', 'cherry']

# 降序排序
result = sorted(fruits, reverse=True)
print(result)  # 输出 ['date', 'cherry', 'banana', 'apple']
# 根据字符串长度进行排序
fruits = ["apple", "banana", "cherry", "date"]
result = sorted(fruits, key=lambda x: len(x))
print(result)  # 输出 ['date', 'apple', 'banana', 'cherry']

#根据字典值大小排序(python3.7以后保持了插入顺序)
scoreDict = {
    '张三': 33,
    '李四': 36,
    '王五': 74,
    '赵六': 56,
    '李白': 88,
    '王维': 98,
    '杜甫': 100,
    '王昌龄': 89,
    '王之涣': 97,
    '王羲之': 93
}
print(scoreDict)

#由于items输出时是元祖对象('张三',33),因此 x[1]就能取到成绩值,x[0]取键
scoreDictSorted = sorted(scoreDict.items(), key=lambda x:x[1], reverse=True)
print(scoreDict.items())
print(scoreDictSorted)

#利用emuterate输出序号,start参数可以指定开始序号
for index, (name, score) in enumerate(scoreDictSorted, start=1):
    print(f'第{index}名:{name}\t成绩:{score}')

#python3.7以后保持了插入顺序
d=dict(scoreDictSorted)
print(d)

结果:

['apple', 'banana', 'cherry', 'date']
['date', 'apple', 'banana', 'cherry']
['date', 'cherry', 'banana', 'apple']
['date', 'apple', 'banana', 'cherry']
{'张三': 33, '李四': 36, '王五': 74, '赵六': 56, '李白': 88, '王维': 98, '杜甫': 100, '王昌龄': 89, '王之涣': 97, '王羲之': 93}
dict_items([('张三', 33), ('李四', 36), ('王五', 74), ('赵六', 56), ('李白', 88), ('王维', 98), ('杜甫', 100), ('王昌龄', 89), ('王之涣', 97), ('王羲之', 93)])
[('杜甫', 100), ('王维', 98), ('王之涣', 97), ('王羲之', 93), ('王昌龄', 89), ('李白', 88), ('王五', 74), ('赵六', 56), ('李四', 36), ('张三', 33)]
第1名:杜甫     成绩:100
第2名:王维     成绩:98
第3名:王之涣   成绩:97
第4名:王羲之   成绩:93
第5名:王昌龄   成绩:89
第6名:李白     成绩:88
第7名:王五     成绩:74
第8名:赵六     成绩:56
第9名:李四     成绩:36
第10名:张三    成绩:33
{'杜甫': 100, '王维': 98, '王之涣': 97, '王羲之': 93, '王昌龄': 89, '李白': 88, '王五': 74, '赵六': 56, '李四': 36, '张三': 33}

根据多个条件排序:

key后面返回一个元祖,先依据元祖第一个元素排序,再依据元祖第二个元素排序。

先依据数据个位数排序,再依据数据本身排序。

scores = [78, 85, 90, 73, 92,63]
sorted_scores = sorted(scores, key=lambda x: (x % 10, x))
print(sorted_scores)

结果:

[90, 92, 63, 73, 85, 78]


http://www.kler.cn/news/311563.html

相关文章:

  • 波分技术基础 -- MS-OTN介绍
  • AIGC论文查重是什么?
  • 【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL23
  • C++笔记21•C++11的新特性•
  • Springboot请求响应案例
  • Ruoyi Cloud K8s 部署
  • Golang | Leetcode Golang题解之第415题字符串相加
  • MySQL:索引02——使用索引
  • kafka 超详细的消息订阅与消息消费几种方式
  • 【运维】自定义exporter
  • Redis——笔记01
  • 【PyQt5】object属性
  • Java中的异步编程模式:CompletableFuture与Reactive Programming的实战
  • 性格类型识别系统源码分享
  • DTD 实体
  • 【HTTP】HTTP报文格式和抓包
  • C++初阶:STL详解(五)——vector的模拟实现
  • 【JOIN 详解】SQL连接全面解析:从基础到实战
  • PostgreSQL主从切换测试
  • 使用BGP及静态路由方式实现链路冗余和ByPass
  • C:字符串函数(完)-学习笔记
  • 北斗盒子TD20——水上作业的安全防线,落水报警守护生命
  • React 中的延迟加载
  • 音视频入门基础:AAC专题(10)——FFmpeg源码中计算AAC裸流每个packet的pts、dts、pts_time、dts_time的实现
  • AUTOSAR_EXP_ARAComAPI的5章笔记(6)
  • 高级java每日一道面试题-2024年9月18日-设计模式篇-JDK动态代理,CGLIB代理,AspectJ区别?
  • 组件封装有哪些注意事项—面试常问优美回答
  • 2024网站建设比较好的公司都有哪些
  • re题(35)BUUCTF-[FlareOn4]IgniteMe
  • Docker Redis 7.2.3 部署