Python中將列表的每個元素轉換為鍵值對


列表是Python中常用的資料結構,其中資料以元素的形式儲存。鍵值對是我們所說的字典,其中資料具有唯一的鍵和對應的值。在本文中,我們將介紹如何在Python中將列表的每個元素轉換為鍵值對。

將Python中列表的每個元素轉換為鍵值對是為了透過將每個元素與唯一的鍵關聯來有效地組織和檢索資料。這種轉換增強了資料結構,能夠進行更快的查詢操作,並提供靈活且有意義的資料表示,從而提高可讀性並促進基於鍵的操作。

示例

Input: [6565, 49, 123321, 562, 73]
Output: {65: 65, 4: 9, 123: 321, 5: 62, 7: 3}

我們將透過將元素分成兩個相等的部分來將列表元素轉換為鍵值對,前半部分將作為鍵,後半部分將作為值。

方法一:ForEach迴圈

ForEach迴圈提供了一種遍歷可迭代物件(例如陣列、列表或字典)中每個元素的方法。

下面的程式碼使用ForEach迴圈,並將元素陣列轉換為鍵值對字典,每個元素的鍵和值分配相等,一半的數字作為鍵,一半作為值——生成轉換後的資料作為字典輸出。

示例

def convert_to_key_value_pairs(elements):
   result = {}
   for num in elements:
      num_str = str(num)
      length = len(num_str)
      half_length = length // 2
       
      key = int(num_str[:half_length])
      value = int(num_str[half_length:])
       
      result[key] = value
   
   return result

elements = [6565, 49, 123321, 562, 73]
output = convert_to_key_value_pairs(elements)
print(output)

輸出

{65: 65, 4: 9, 123: 321, 5: 62, 7: 3}

方法二:使用列表推導和字串操作

Python中的列表推導提供了一種非常靈活且簡潔易讀的方法,可以透過對現有列表或可迭代物件(如列表或可迭代物件)應用操作或轉換來建立新列表。透過將此步驟與迭代可迭代物件或列表本身結合到一行程式碼中,您可以輕鬆地生成多個新列表,同時迭代原始列表,通常透過方括號方便引用——這為過濾元素、應用函式或更改任何列表中的資料提供了一種有效的方法。

字串操作是指以各種方式更改或操作字串的做法。由於Python字串是不可變的,因此不能直接進行直接更改。取而代之的是,存在字串操作方法,這些方法可以實現連線、切片、替換和分割以及大小寫轉換等等。透過字串操作,可以從一個字串中提取部分內容,組合多個字串,更改其中的內容以及操作其結構以滿足個人需求——這是在使用Python進行文字處理、資料清理和基於字串的操作中不可或缺的技能。

示例

elements = [6565, 49, 123321, 562, 73]
output = {int(str(num)[:len(str(num)) // 2]): int(str(num)[len(str(num)) // 2:]) for num in elements}
print(output)

輸出

{65: 65, 4: 9, 123: 321, 5: 62, 7: 3}

方法三:使用zip()和map()函式

map()和zip()函式用於資料處理和操作,解釋如下。

zip()  zip()函式接受多個可迭代物件作為引數,並返回一個元組迭代器,其中每個元組包含來自輸入可迭代物件的成對元素。它並行迭代可迭代物件,將對應的元素組合成元組。當最短的輸入可迭代物件耗盡時,生成的迭代器停止。zip()經常用於聚合或轉置來自多個列表或可迭代物件的資料。

map()  map()函式將給定函式應用於可迭代物件中的每個專案,並返回其結果的迭代器。它接受一個或多個可迭代物件和一個或多個函式作為引數;然後,此函式將分別應用於這些可迭代物件中的每個元素,然後返回一個包含其轉換值的迭代器。當您想要對一個列表或可迭代物件中的多個專案執行類似的操作時,map()尤其有用。

示例

elements = [6565, 49, 123321, 562, 73]
output = dict(zip(map(lambda num: int(str(num)[:len(str(num)) // 2]), elements), map(lambda num: int(str(num)[len(str(num)) // 2:]), elements)))
print(output)

輸出

{65: 65, 4: 9, 123: 321, 5: 62, 7: 3}

方法四:使用Itertools和iter()函式

itertools模組及其iter()函式廣泛用於處理迭代和建立迭代器物件。

itertools  itertools庫提供了許多用於高效且記憶體友好的迭代的函式,例如product()、permutations()、combinations()和chain()——一些常用的函式包括這個函式,它可以有效地生成組合、排列和笛卡爾積,而無需將其元素顯式儲存在記憶體中。

Python中的iter()函式  Python中的這個內建函式從可迭代物件返回一個迭代器物件。它接受兩個引數;一個用於建立迭代器的可迭代物件和一個可選的哨兵值,用於標記其結束。當迭代支援迭代的物件(例如列表、字串或自定義可迭代物件)時,可以使用iter()函式。

示例

import itertools
elements = [6565, 49, 123321, 562, 73]
iter_test_list = iter(elements)
output = {int(str(num)[:len(str(num)) // 2]): int(str(num)[len(str(num)) // 2:]) for num in itertools.islice(iter_test_list, len(elements))}
print(output)

輸出

{65: 65, 4: 9, 123: 321, 5: 62, 7: 3}

結論

Python提供了多種方法將列表的每個元素轉換為鍵值對,包括ForEach迴圈、帶字串操作的列表推導、zip()和map()函式、Itertools模組和iter()函式等等。我們使用這些方法快速輕鬆地完成了所需的轉換;這些方法在將列表元素轉換為鍵值對時提供了靈活性和可讀性、效率以及無縫的資料操作/轉換過程。

更新於:2023年8月18日

瀏覽量:279

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告