某班英語成績以字典的形式存儲(chǔ)為: {'lilei':90,'Tom':88,'Jack':76} 根據(jù)成績高低,計(jì)算學(xué)生排名 排序問題 這是個(gè)排序問題,優(yōu)先得想到 python 的內(nèi)置函數(shù),因?yàn)閮?nèi)置函數(shù)是 python 精心優(yōu)化過 首先使用sorted函數(shù) # 首先創(chuàng)建隨機(jī)的成績表 from random import randint # xyzabc 六個(gè)人,每個(gè)人的成績在60-100之間 d = {x: randint(60, 100) for x in 'xyzabc'} # 使用sorted排序,默認(rèn)是對key排序的,并且值不見了 print(sorted(d)) sorted函數(shù)默認(rèn)是對key排序的,排序完值已經(jīng)不見了,不是我們想要的 轉(zhuǎn)化為元組的形式 # 思路一,轉(zhuǎn)化為元組,(成績,人)這樣來比較 # 使用zip 函數(shù)將字典轉(zhuǎn)化為元組 # d.values 是 字典的值,d.keys 是字典的鍵 f = zip(d.values(),d.keys()) print(sorted(f)) 使用sorted函數(shù) # 思路二,使用sorted函數(shù),配合key參數(shù) # lambda 表達(dá)式的x,指的是items的每一對鍵值對,x[1]是說取第二個(gè)值來進(jìn)行比較 g = sorted(d.items(),key=lambda x:x[1]) print(g) 著作權(quán)歸作者所有
|
|