python高效編程實踐-如何根據字典中值的大小, 對字典中的項排序(4/50)
學習內容:如何根據字典中值的大小, 對字典中的項排序
一、所用到的基本函數
一般來說,對於排序任務最先考慮到的函數就是sorted()函數
函數聲明:sorted(iterable, *, key=None, reverse=False) 函數說明:Return a new sorted list from the items in iterable.官方文檔:https://docs.python.org/3/library/functions.html?highlight=sorted#sorted
sorted([9,5,3,4,8,3,1]) # [1, 3, 3, 4, 5, 8, 9]n
二、解決方案
(一)利用zip函數將鍵與值對換,然後再進行排序
首先,把字典直接傳入sorted函數,結果是對字典中的鍵進行了排序,字典中的值已經沒了。
from random import randintnd = {x:randint(60,100) for x in xyzabc}nprint(d) # {a: 94, z: 93, c: 99, x: 76, b: 82, y: 67}nprint(sorted(d)) # [a, b, c, x, y, z]n
列印字典的鍵和值
print(d.keys()) # dict_keys([a, z, c, x, b, y])nprint(d.values()) # dict_values([94, 93, 99, 76, 82, 67])n
利用zip函數來重新將鍵值對調後合成
list(zip(d.values(), d.keys())) # [(94, a), (93, z), (99, c), (76, x), (82, b), (67, y)]n
對新的列表進行排序
sorted(zip(d.values(), d.keys())) # [(67, y), (76, x), (82, b), (93, z), (94, a), (99, c)]n
(二)、利用sorted的第二個參數
官方文檔對key的解釋:key specifies a function of one argument that is used to extract a comparison key from each list element: key=str.lower. The default value is None (compare the elements directly).
sorted(d.items(),key = lambda x:x[1]) # [(y, 67), (x, 76), (b, 82), (z, 93), (a, 94), (c, 99)]n
推薦閱讀:
※使用Celery
※黃哥Python 所寫三大操作系統Python 學習環境準備
※你寫過的最好的 Python 腳本是什麼?
※想要用 python 做爬蟲, 是使用 scrapy框架還是用 requests, bs4 等庫?
TAG:Python |