天天看點

考點:最值應用,基本排序法,複雜排序法,sorted函數的靈活運用【Python習題05】

考點:最值應用,基本排序法,複雜排序法,sorted函數的靈活運用【Python習題05】

題目:

找到年齡最大的人,并輸出。

請找出程式中有什麼問題。

盡量使用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聯系方式 :   [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函數對更為複雜的對象進行排序。