目錄
- 前言
- sorted()函式
- sorted語法
- 回傳值
- sorted()給字典排序
- 按value值對字典排序
- 按key值對字典排序
- 只對鍵或值排序
- 注意:sorted()并不會影響原字典,
前言
幾天前,你要是讓我對字典的元素進行排序,我會告訴你,先用一個串列存盤要排序的元素,然后使用sort()對串列元素進行排序,之后就能根據鍵-值對應情況判斷字典元素的順序,
- 比如:
用字典存盤學號和成績,輸出前三名的學號和成績,
stu = {1002: 78, 1003: 89,
1001: 77, 1006: 98,
1005: 92, 1004: 100}
score = list(stu.values())
score.sort()
for key, val in enumerate(score[::-1]):
if key < 3:
for i in stu.keys():
if stu[i] == val:
print(i, val)
- 輸出結果
1004 100
1006 98
1005 92
這是個蠢方法,費時又費力,好在我現在知道了sorted()函式,可以很方便地對字典進行排序,
sorted()函式
sorted可對所有可迭代物件進行排序操作,
sorted語法
sorted(iterable, cmp=None, key=None, reverse=False)
iterable可迭代物件cmp比較的函式,這個具有兩個引數,引數的值都是從可迭代物件中取出,此函式必須遵守的規則為,大于則回傳1,小于則回傳-1,等于則回傳0,- 個人覺得cmp不如key好用,
key主要是用來進行比較的函式,只有一個引數,具體的函式的引數就是取自可迭代物件中,指定可迭代物件中的一個元素進行排序,reverse排序規則,reverse=True 降序, reverse=False 升序(默認)
回傳值
回傳重新排序的串列
sorted()給字典排序
按value值對字典排序
需要用到key引數
- 對成績進行降序排序
stu = {1002: 78, 1003: 89,
1001: 77, 1006: 98,
1005: 92, 1004: 100}
score = sorted(stu.items(), key=lambda item:item[1], reverse=True)
# 查看score
print(score)
# 取前三名
for index, val in enumerate(score):
if index < 3:
print(val[0], val[1], sep=" ")
- stu.items():將stu的鍵值對轉換為元組
dict_items([(1002, 78), (1003, 89), (1001, 77), (1006, 98), (1005, 92), (1004, 100)]) - stu.items()的每一個元素作為匿名函式的引數,回傳第二個元素,也就是成績,作為key引數的比較物件,
- reverse=True:降序排序
- 輸出結果
[(1004, 100), (1006, 98), (1005, 92), (1003, 89), (1002, 78), (1001, 77)]
1004 100
1006 98
1005 92
按key值對字典排序
- 按學號進行排序
stu = {1002: 78, 1003: 89,
1001: 77, 1006: 98,
1005: 92, 1004: 100}
score = sorted(stu.items(), key=lambda item:item[0])
for index, val in enumerate(score):
print(val[0], val[1], sep=" ")
- 輸出結果
1001 77
1002 78
1003 89
1004 100
1005 92
1006 98
只對鍵或值排序
如果只想輸出鍵的排序結果或者值的排序結果,很簡單,使用dict.keys()和dict.values()作為sorted的引數就行了,
stu = {1002: 78, 1003: 89,
1001: 77, 1006: 98,
1005: 92, 1004: 100}
print(sorted(stu.keys()))
print(sorted(stu.values()))
- 輸出結果
[1001, 1002, 1003, 1004, 1005, 1006]
[77, 78, 89, 92, 98, 100]
注意:sorted()并不會影響原字典,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/162707.html
標籤:Python
上一篇:實體012:100到200的素數
下一篇:python 檔案操作
