考点:最值应用,基本排序法,复杂排序法,sorted函数的灵活运用【Python习题05】
2023-04-18 12:53:32 时间
题目:
找到年龄最大的人,并输出。
请找出程序中有什么问题。
尽量使用sorted函数实现!
考点:
此题考点主要是对数值的比较,然后对属性的排序。
输入输出:
{'li': 18, 'wang': 50, 'zhang': 20, 'sun': 22}
排序person2
{'li': 18, 'zhang': 20, 'sun': 22, 'wang': 50}
考题分析:
- 一般情况我们只会对数值比较,然后针对数值排序,但在实际工作中,这些数值往往都是在对象内的,因此我们此题就是为了练习对象内的数值比较,让对象进行排序。
- 这里的输入,我们采用字典 {"li": 18, "wang": 50, "zhang": 20, "sun": 22}
所以,我们需要比较的是每个人的年龄。,当我们做好排序,就可以指导最值了。
3.常规的比较方法就是例如本地源代码的第一种方法,当我们比较出更大的年龄时,同时带上对应的姓名。
4.此题的第二与第三种方法都是利用了cmp_to_key函数来进行复杂排序,这个函数在functools模块,巧妙运用后可以对复杂对象进行排序。
# -*- coding: utf-8 -*-
"""
@File文件 : ljytest76
@Time创建时间 : 2021/11/25
@Author作者 : 刘金玉
@Contact联系方式 : selidev@qq.com 编程创造城市 http://bcczcs.com
注:作者信息请保留!否则必究法律责任!
刘金玉编程,编程创造城市!
作者微信号:selidev
作者抖音号:selidev
作者B站:刘金玉编程
微信公众号:编程创造城市
题目:找到年龄最大的人,并输出。请找出程序中有什么问题。
"""
#第一种方法
# if __name__ == '__main__':
# person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}
# max_=18
# max_key="li"
# for k,v in person.items():
# if v>max_:
# max_=v
# max_key=k
# print(max_key,max_)
#
#
# #第二种方法
from functools import cmp_to_key
person2 = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}
print(person2)
# print(person2.keys())
print("排序person2")
def tfunc(k1,k2):
if person2[k1]>person2[k2]:
return 1
else:
return -1
tperson=sorted(person2,key=cmp_to_key(tfunc))
resultdic={}
for k in tperson:
resultdic[k]=person2[k]
print(resultdic)
#复杂排序案例刘金玉
# from functools import cmp_to_key
# p=[("a",6),("k",1),("d",23)]
# def my(a,b):
# print(a,b)
# if a[1]>b[1]:
# return 1
# else:
# return -1
# p2=sorted(p,key=cmp_to_key(my))
# print(p2)
总结:通过此题,我们主要学习如何使用soted函数对更为复杂的对象进行排序。
相关文章
- 互联网大戏!被腾讯封杀三年,抖音这次忍不住了
- 人工智能应该学什么专业?学什么知识?
- 谷歌宣布开源《Tilt Brush》VR绘画应用
- 研报:区块链+工业互联网行业研究报告
- 互联网到底多赚钱,懂“边际成本”的人,都是高手
- 到底该不该发展人工智能技术?
- 从就业面的角度来说,哪门编程语言比较适合非计算机专业学生学习
- 达摩院2021十大科技趋势
- 专心工作只想搞钱的前端女程序员的2020
- 谷歌可能会通过不更新iOS应用来规避苹果的隐私披露
- 2020年互联网行业年终总结
- IDC发布中国未来连接十大预测:2023年60%中国1000强垂直行业企业将开展5G专网应用
- 2021年,信息产业如何把握时代机遇?
- 达摩院2021年十大科技趋势出炉:量子计算、脑机接口…
- 微信收集用户信息?美媒遭民众怒怼:美国的网络环境真正令人堪忧
- 工信部:今年5G的终端连接数已超过2亿
- 突然,微信、支付宝再也不能存款了
- 直接带动经济总产出将超8000亿元,5G发力了
- 华为鸿蒙OS手机Beta版正式发布,跨端和入口有多大吸引力?
- 今日数据精选:中国新冠病毒疫苗正做好大规模生产准备;比特币突破两万美元创历史新高