標籤:

python高效編程實踐-如何根據字典中值的大小, 對字典中的項排序(4/50)

學習內容:如何根據字典中值的大小, 對字典中的項排序

一、所用到的基本函數

一般來說,對於排序任務最先考慮到的函數就是sorted()函數

函數聲明:sorted(iterable, *, key=None, reverse=False)

函數說明:Return a new sorted list from the items in iterable.

官方文檔:docs.python.org/3/libra

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 |