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 中,我們有多種方法來實現函式或邏輯。我們需要根據需求記住最佳可行方法。

有時,執行所需的時間很重要,有時延遲很重要,有時格式也很重要。正如我們所看到的,輸出通常略有不同。

更新於:2023年8月18日

144 次檢視

啟動您的 職業生涯

完成課程獲得認證

開始
廣告