Python 中將列表轉換為單個字典鍵值對列表
Python 是目前廣泛使用的一種非常流行的高階語言。列表是 Python 中四種內建資料型別之一,用於儲存資料的集合或組。字典、元組和集合是另外三種資料型別。
在使用 Python 時,經常會遇到需要將值列表轉換為具有鍵值對的單個字典的情況。本文將指導您完成在 Python 中將列表轉換為字典的過程。
最終,您將清楚地瞭解如何在 Python 中建立列表並將其轉換為字典。
方法
要將列表轉換為單個字典鍵值對列表,我們可以按照以下簡單的步驟操作:
步驟 1 − 假設我們有一個列表,建立一個空字典。
步驟 2 − 使用迴圈迭代列表。
步驟 3 − 將列表的每個元素作為鍵,並將對應的索引作為字典中的值。
步驟 4 − 返回字典。
我們將討論所有可能的處理方法。
程式碼實現
要在 Python 中建立列表,我們可以簡單地將用方括號括起來的值列表賦給變數。
List_demo = [1,2,3,4]
現在,讓我們深入瞭解解決方案:
方法 1:使用迴圈
此方法涉及首先建立一個鍵,然後附加值(不包括 K 索引處的值)以建立字典列表。
它的時間複雜度為 O(n),輔助空間為 O(n)。
示例
# initialize a list demo_list = [2, 3, 4, 9, 8] # printing the list print("List : " + str(demo_list)) # initializing K K = 3 # Convert list to Single Dictionary Key Value Pair res = {demo_list[K]: []} for i in range(len(demo_list)): if i != K: res[demo_list[K]].append(demo_list[i]) # printing result print("Result : " + str(res))
輸出
List : [2, 3, 4, 9, 8] Result : {9: [2, 3, 4, 8]}
方法 2:使用列表切片
如果我們切出 K 索引並將其作為字典中的值,則另一種方法可以是一行程式碼。
下面的程式碼將使事情更清晰。
它的時間複雜度為 O(n),輔助空間為 O(n)。
示例
# initializing list demo_list = [2, 3, 4, 9, 8] # printing the list print("List : " + str(demo_list)) # initializing K K = 2 # Convert list to Single Dictionary Key Value Pair res = {demo_list[K]: demo_list[:K] + demo_list[K + 1:]} # result print("Result : " + str(res))
輸出
List : [2, 3, 4, 9, 8] Result : {4: [2, 3, 9, 8]}
方法 3:使用列表/字典推導式
在這種方法中,將建立一個新列表,其中包含除演示/初始列表中索引 K 處的元素之外的所有元素。然後,它將建立一個新的字典,其中索引 K 處的鍵和新列表作為值。
它的時間複雜度為 O(n),輔助空間為 O(n)。
示例
# initialize a list demo_list = [2, 3, 4, 9, 8] # initializing K K = 3 # using list comprehension to create a new list with all elements except the one at index K new_list = [x for i, x in enumerate(demo_list) if i != K] # creating a dictionary res = {demo_list[K]: new_list} # printing initial list print("List : " + str(demo_list)) # printing result print("Result : " + str(res))
輸出
List : [2, 3, 4, 9, 8] Result : {9: [2, 3, 4, 8]}
同樣,我們可以使用字典推導式做同樣的事情。時間複雜度和輔助空間保持不變。
方法 4:使用集合運算
另一種方法是使用集合運算。我們初始化初始列表和索引 K。建立一個包含索引鍵的集合,並從值中減去鍵以獲得所有不在索引 K 處的值的集合。
使用這些集合建立一個字典。列印原始列表和最終字典。
它的時間複雜度為 O(n),輔助空間為 O(n)。
示例
# initializing list demo_list = [2, 3, 4, 9, 8] # initializing K K = 3 # Using set operations keys = {demo_list[K]} values = set(demo_list) - keys res = {keys.pop(): list(values)} # printing the list print("List : " + str(demo_list)) # printing Dictionary print("Result : " + str(res))
輸出
List : [2, 3, 4, 9, 8] Result : {9: [8, 2, 3, 4]}
*現在,嘗試使用 pop() 方法實現相同的功能*
方法 5:使用 filter 和 lambda 函式
在這種方法中,如果列表中的每個元素都不等於給定索引 K 處的元素,我們將建立一個 lambda 函式。並使用 filter() 函式提取透過 lambda 條件的列表。然後我們可以使用生成的列表進一步生成字典。
示例
# initializing a list demo_list = [2, 3, 4, 9, 8] # initializing K K = 1 res = {demo_list[K]: list(filter(lambda x: x != demo_list[K], demo_list))} # printing list print("List : " + str(demo_list)) # printing result print("Result : " + str(res))
輸出
List : [2, 3, 4, 9, 8] Result : {3: [2, 4, 9, 8]}
它的時間複雜度為 O(n),輔助空間為 O(n)。
結論
因此,我們瀏覽了將列表轉換為單個字典鍵值對的各種方法。在 Python 中,我們有多種方法來實現函式或邏輯。我們需要根據需求記住最佳可行方法。
有時,執行所需的時間很重要,有時延遲很重要,有時格式也很重要。正如我們所看到的,輸出通常略有不同。