如何在 Python 中根據字典的第 k 個索引值排序?


在 Python 中,我們可以使用各種函式根據特定索引(通常稱為第 k 個索引值)的值對字典進行排序,例如使用帶有 Lambda 函式的 sorted() 函式、使用 operator 模組中的 itemgetter() 函式、使用自定義函式和 sorted() 函式等。 在本文中,我們將瞭解這些方法以及如何使用它們在 Python 中根據第 k 個索引值對字典進行排序。

方法 1:使用帶有 Lambda 函式的 sorted() 函式

此方法利用 sorted() 函式和 Lambda 函式作為 key 引數,根據所需索引處的值對字典進行排序。 它提供了一種直接的方法來根據第 k 個索引值對字典進行排序。

語法

sorted_dict = dict(sorted(dictionary.items(), key=lambda x: x[index]))

這裡,sorted() 函式接收一個可迭代物件並返回一個新的已排序列表。 我們將 dictionary.items() 作為可迭代物件傳遞,key 引數允許我們使用 Lambda 函式指定排序條件。 在 Lambda 函式中,x 表示字典中的每個專案,x[index] 指的是所需索引處的值。

示例

在下面的示例中,我們有一個字典,其中每個鍵對應一個列表。 我們希望根據每個列表中索引 1 處的值對字典進行排序,該值表示水果的數量。 Lambda 函式 lambda x: x[index] 從字典中的每個專案中提取索引 1 處的值,並根據這些值對生成的字典進行排序。 輸出顯示已排序的字典,專案按數量升序排列。

dictionary = {1: ['Apple', 50], 2: ['Banana', 30], 3: ['Orange', 40]}
index = 1
sorted_dict = dict(sorted(dictionary.items(), key=lambda x: x[index]))
print(sorted_dict)

輸出

{1: ['Apple', 50], 2: ['Banana', 30], 3: ['Orange', 40]}

方法 2:使用 operator 模組中的 itemgetter() 函式

operator 模組中的 itemgetter() 函式提供了一種簡潔高效的解決方案來對字典進行排序。 它提供了一種簡潔且最佳化的方式來提取所需索引處的值並相應地對字典進行排序。

語法

from operator import itemgetter

sorted_dict = dict(sorted(dictionary.items(), key=itemgetter(index)))

這裡,itemgetter() 函式返回一個可呼叫的物件,該物件可用作排序的鍵函式。 我們將索引作為引數傳遞給 itemgetter() 以指定所需的排序索引。

示例

在下面的示例中,我們從 operator 模組匯入 itemgetter() 函式。 itemgetter(index) 建立一個可呼叫的物件,該物件從每個字典項中檢索索引 1 處的值。 透過將其作為 key 引數傳遞給 sorted(),我們根據這些值對字典進行排序。 輸出是已排序的字典,它按水果數量升序排列。

from operator import itemgetter

dictionary = {1: ['Apple', 50], 2: ['Banana', 30], 3: ['Orange', 40]}
index = 1
sorted_dict = dict(sorted(dictionary.items(), key=itemgetter(index)))
print(sorted_dict)

輸出

{1: ['Apple', 50], 2: ['Banana', 30], 3: ['Orange', 40]}

方法 3:使用自定義函式和 sorted() 函式

我們可以建立自己的自定義函式,其中包含用於對字典進行排序的 sorted 函式。 透過定義一個函式,該函式接收字典和索引作為引數,並在函式體中使用帶有 Lambda 函式的 sorted() 函式,自定義方法提供了一種模組化的方法來根據第 k 個索引值對字典進行排序。

語法

def sort_dict_by_index(dictionary, index):
    return dict(sorted(dictionary.items(), key=lambda x: x[index]))

sorted_dict = sort_dict_by_index(dictionary, index)

這裡,建立了一個自定義函式 sort_dict_by_index() 來包含排序邏輯。 該函式接收字典和索引作為引數,並使用與方法 1 相同的方法返回已排序的字典。

示例

在下面的示例中,我們定義了 sort_dict_by_index() 函式,該函式接收字典和索引作為引數。 在函式內部,我們使用了與方法 1 中相同的 sorted() 和 Lambda 函式方法。 函式呼叫 sort_dict_by_index(dictionary, index) 返回已排序的字典,然後將其打印出來。

def sort_dict_by_index(dictionary, index):
    return dict(sorted(dictionary.items(), key=lambda x: x[index]))

dictionary = {1: ['Apple', 50], 2: ['Banana', 30], 3: ['Orange', 40]}
index = 1
sorted_dict = sort_dict_by_index(dictionary, index)
print(sorted_dict)

輸出

{1: ['Apple', 50], 2: ['Banana', 30], 3: ['Orange', 40]}

結論

在本文中,我們討論瞭如何使用 Python 方法和函式根據特定索引值對字典進行排序。 第一種方法使用了帶有 Lambda 函式的 sorted() 函式,而第二種方法使用了 operator 模組中的 itemgetter() 函式。 第三種方法涉及建立封裝排序邏輯的自定義函式。

更新於: 2023年7月18日

191 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.