Python程式:將字典列表轉換為列表字典
在Python中,字典是一種內建的資料結構,它以鍵值對的形式儲存資料。它允許根據相應的鍵高效地檢索和修改值。字典中的每個鍵都必須是唯一的,並且與一個特定值相關聯。
列表字典是一個字典,其中與每個鍵關聯的值都是列表。這意味著每個鍵都對映到多個值,並且這些值作為列表中的元素儲存。
另一方面,字典列表是一個列表,其中包含多個字典作為其元素。列表中的每個字典都可以擁有自己的一套鍵值對。
在本文中,我們將學習如何在Python中將字典列表轉換為列表字典。
示例
ListOfDictionaries = [
{'cricketer': 'virat', 'score': 90},
{'cricketer': 'chahal', 'score': 30},
{'cricketer': 'dhoni', 'score': 120},
{'cricketer': 'pandya', 'score': 110},
{'cricketer': 'smith', 'score': 115}
]
DictionaryofLists: {'cricketer': ['virat', 'chahal', 'dhoni', 'pandya', 'smith'], 'score': [90, 30, 120, 110, 115]}
使用的方法
以下是完成此任務的各種方法
使用for迴圈
使用字典推導式
使用pandas DataFrame
使用NumPy模組
方法1:使用for迴圈
此方法建立一個名為dictOflists的空字典,用於儲存生成的列表字典。然後,它使用迴圈迭代輸入列表中的每個字典,提取'cricketer'鍵作為字典的鍵,並將整個字典賦值為其值。最後,它顯示生成的列表字典,其中每個板球運動員都是一個鍵,對映到他們各自的得分字典。
演算法(步驟)
以下是執行所需任務的演算法/步驟。
建立一個變數來儲存輸入的字典列表。
建立一個空字典來儲存生成的集合字典。
使用for迴圈遍歷輸入字典列表,將輸入字典列表轉換為列表字典。
顯示輸出列表字典。
示例
下面的程式使用for迴圈將字典列表轉換為列表字典。
# input list of dictionaries
inputListOfDicts = [
{'cricketer': 'virat', 'scores': [40, 70, 90]},
{'cricketer': 'chahal', 'scores': [10, 25, 30]},
{'cricketer': 'dhoni', 'scores': [35, 65, 120]},
{'cricketer': 'pandya', 'scores': [58, 89, 110]},
{'cricketer': 'smith', 'scores': [76, 110, 115]}
]
# creating an empty dictionary for
# storing resultant dictionary of lists
dictOflists = {}
# traversing in the input list of dictionaries
# for converting input list of dictionaries to a dictionary of lists
for i in inputListOfDicts:
# Getting values
cricketer = i['cricketer']
dictOflists[cricketer] = i
# displaying the output dictionary of lists
dictOflists
輸出
{'virat': {'cricketer': 'virat', 'scores': [40, 70, 90]},
'chahal': {'cricketer': 'chahal', 'scores': [10, 25, 30]},
'dhoni': {'cricketer': 'dhoni', 'scores': [35, 65, 120]},
'pandya': {'cricketer': 'pandya', 'scores': [58, 89, 110]},
'smith': {'cricketer': 'smith', 'scores': [76, 110, 115]}}
方法2:使用字典推導式
Python中的字典推導式是一種簡潔的方式,可以透過迭代現有的序列或可迭代物件來建立字典,應用表示式或條件來生成鍵值對,從而產生簡潔易讀的程式碼。它允許在一行程式碼中建立字典,結合了迭代和轉換。
演算法(步驟)
以下是執行所需任務的演算法/步驟。
建立一個變數來儲存輸入的字典列表。
列印字典,其中鍵是inputListOfDicts中第一個字典的鍵。
使用列表推導式列印值,這些值是inputListOfDicts中每個字典的對應值的列表。
示例
下面的程式使用字典推導式將字典列表轉換為列表字典。
# input list of dictionaries
inputListOfDicts = [
{'cricketer': 'virat', 'score': 90},
{'cricketer': 'chahal', 'score': 30},
{'cricketer': 'dhoni', 'score': 120},
{'cricketer': 'pandya', 'score': 110},
{'cricketer': 'smith', 'score': 115}
]
# Using list comprehension
print({dict_key: [p[dict_key] for p in inputListOfDicts] for dict_key in inputListOfDicts[0]})
輸出
{'cricketer': ['virat', 'chahal', 'dhoni', 'pandya', 'smith'], 'score': [90, 30, 120, 110, 115]}
方法3:使用pandas DataFrame
在此方法中,我們將使用pandas dataframe將字典列表轉換為列表字典。
語法
pandas.DataFrame(listofdictionary).to_dict(orient=”list”)
引數
listofdictionary: 輸入字典列表。
to_dict()函式: 將其轉換為字典
orient: 轉換為列表
演算法(步驟)
以下是執行所需任務的演算法/步驟。
使用import關鍵字匯入帶有別名的pandas模組。
建立一個變數來儲存輸入的字典列表。
將字典列表inputListOfDicts轉換為pandas DataFrame,然後將DataFrame轉換為字典,其中鍵是DataFrame的列名,值是包含每個列值的列表。
示例
下面的程式使用pandas dataframe將字典列表轉換為列表字典
# importing pandas module
import pandas as pd
# input list of dictionaries
inputListOfDicts = [
{"cricketer": "virat", "score": 90},
{"cricketer": "chahal", "score": 30},
{"cricketer": "dhoni", "score": 120},
{"cricketer": "pandya", "score": 110},
{"cricketer": "smith", "score": 115},
]
# converting into dictionary of lists using pandas to_dict()
pd.DataFrame(inputListOfDicts).to_dict(orient="list")
輸出
On executing, the above program will generate the following output –
{'cricketer': ['virat', 'chahal', 'dhoni', 'pandya', 'smith'],
'score': [90, 30, 120, 110, 115]}
方法4:使用NumPy模組
演算法(步驟)
以下是執行所需任務的演算法/步驟
使用import關鍵字匯入帶有別名的numpy模組。
使用array()函式建立一個numpy陣列。
使用索引訪問陣列值的第一個元素(從0開始)。
使用鍵作為索引列印結果。
下面的程式使用numpy模組將字典列表轉換為列表字典。
# importing numpy module with an alias name
import numpy as np
# creating a numpy array using array() function
inputArray = np.array([(25, 45), (30, 70)],
dtype=[('num1', int),
('num2', int)])
# accessing first array element using indexing
# (starts from 0)
print(inputArray[0])
# Printing by using key
print(inputArray['num1'])
輸出
On executing, the above program will generate the following output – (25, 45) [25 30]
程式碼建立了一個具有指定資料型別和欄位名的NumPy陣列inputArray。然後,它演示了使用索引和基於鍵的索引訪問陣列的元素。
結論
總而言之,本文研究了將字典列表轉換為列表字典的四種不同技術。探討的方法包括傳統的for迴圈迭代、簡潔的字典推導式、pandas DataFrame的使用以及NumPy模組的應用。每種方法都有其自身的優勢和適用性,取決於具體的需要和可用的資源。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP