我創建了一個字典dict(),其中鍵是一個單詞,專案是該單詞在文本檔案中出現的時間量。
我正在嘗試對單詞的出現次數從高到低進行排序。
輸入的一個例子是:
{'stack': 2, 'over': 1, 'flow': 3}
所需的輸出是顯示單詞及其出現的任何型別的串列,即:
[['flow', 3], ['stack', 2], ['over', 1]]
我試過使用:
sorted(word_dict, key=word_dict.get, reverse=True)
輸出:
['flow', 'stack', 'over']
我在其他 SO 帖子中發現的;但是,這只輸出單詞而不是出現次數,我該如何解決這個問題?
uj5u.com熱心網友回復:
您可以遍歷排序的鍵并構造新串列:
lst = [[k, dct[k]] for k in sorted(dct, key=dct.get, reverse=True)]
print(lst)
印刷:
[['flow', 3], ['stack', 2], ['over', 1]]
或者:直接對字典項進行排序:
lst = sorted(map(list, dct.items()), key=lambda x: x[1], reverse=True)
print(lst)
uj5u.com熱心網友回復:
如果您想在排序時保留字典中的所有資訊,典型的第一步是呼叫字典的 .items() 方法。在字典上呼叫 .items() 將提供一個表示鍵值對的元組的可迭代:
至關重要的是,您可以將 sorted() 函式與字典一起使用,并呼叫 .items() 方法并將結果用作 sorted() 函式的引數。使用 .items() 保留字典中的所有資訊:
例如:->
people = {3: "Jim", 2: "Jack", 4: "Jane", 1: "Jill"}
# Sort key
def value_getter(item):
return item[1]
sorted(people.items(), key=value_getter)
#ans:-> [(2, 'Jack'), (4, 'Jane'), (1, 'Jill'), (3, 'Jim')]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/524703.html
標籤:Python排序字典
上一篇:更改排序時過濾不會自動作業
