打开网易新闻 查看精彩图片

题目:

找到年龄最大的人,并输出。

请找出程序中有什么问题。

尽量使用sorted函数实现!

考点:

此题考点主要是对数值的比较,然后对属性的排序。

输入输出:

{'li': 18, 'wang': 50, 'zhang': 20, 'sun': 22}

排序person2

{'li': 18, 'zhang': 20, 'sun': 22, 'wang': 50}

考题分析:

  1. 一般情况我们只会对数值比较,然后针对数值排序,但在实际工作中,这些数值往往都是在对象内的,因此我们此题就是为了练习对象内的数值比较,让对象进行排序。

  2. 这里的输入,我们采用字典

    {"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_keyperson2 = {"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 1else: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函数对更为复杂的对象进行排序。

更多Python基础操作知识,大家可以到B站/优酷/爱奇艺/好看视频/腾讯视频搜索“刘金玉”,可以找到《零基础Python教程》和《Python高级进阶教程》视频合集哦!全部免费亲情奉献!

联系作者:刘金玉

长按关注公众号

编程创造城市官网:https://bcczcs.com/