題目:
找到年齡最大的人,并輸出。
請找出程式中有什麼問題。
盡量使用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聯系方式 : [email protected] 程式設計創造城市 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函數對更為複雜的對象進行排序。