题目:
找到年龄最大的人,并输出。
请找出程序中有什么问题。
尽量使用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模块,巧妙运用后可以对复杂对象进行排序。
#第一种方法 # 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函数对更为复杂的对象进行排序。