Python 字典列表轉換 CSV 程式
在字典中,鍵必須唯一且不可變,而值可以是任何型別,並且可以包含值的列表。對於字典列表,每個鍵都指向一個可以包含多個元素的列表。
這是一個字典列表的示例:
data = {'numbers':[1, 2, 3, 4, 5, 6], 'states':['UP', 'Tamil Nadu', 'Telangana', 'Gujarat', 'UP', 'Tamil Nadu'], 'cities':['Agra', 'Chennai', 'Hyderabad', 'Surat', 'Lucknow', 'Coimbatore']})
在上面的字典中,每個鍵都對映到一個值列表。例如,'states' 鍵對映到列表 ['UP', 'Tamil Nadu', 'Telangana', 'Gujarat', 'UP', 'Tamil Nadu']。
另一方面,CSV(逗號分隔值)檔案是一個純文字檔案,它以簡單的逗號分隔格式儲存表格資料。檔案中的每一行通常代表一行資料,每一行中的值用逗號分隔。第一行通常作為標題行,包含列名。
這是一個 CSV 檔案的示例,它表示前面提到的字典列表中的資料:
numbers,states,cities 1,UP,Agra 2,Tamil Nadu,Chennai 3,Telangana,Hyderabad 4,Gujarat,Surat 5,UP,Lucknow 6,Tamil Nadu,Coimbatore
將字典列表轉換為 CSV 檔案時,通常的方法是遍歷字典的鍵和值並將它們寫入 CSV 檔案。本文將討論幾種不同的方法。
使用 csv 模組
Python 中的 csv 模組提供了幾種將資料寫入 CSV 檔案的方法。這些方法是 csv.writer 類的一部分,允許我們將單個行或多行資料寫入 CSV 檔案。
writerow(row) − 此方法將單行資料寫入 CSV 檔案。
writerows(rows) − 此方法將多行資料寫入 CSV 檔案。
此外,我們可以使用zip() 函式逐行迭代字典列表的值。
zip() 函式接受多個可迭代物件(在本例中是值列表),並返回一個迭代器,該迭代器聚合來自每個可迭代物件的元素。這可以有效地將資料從基於列的表示形式轉換為基於行的表示形式。
示例
這是一個示例,演示如何使用 Python csv 模組及其方法將字典列表轉換為 CSV 檔案。
import csv # define the function def dict_to_csv(dictionary, filename): keys = list(dictionary.keys()) values = list(dictionary.values()) with open(filename, 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow(keys) writer.writerows(zip(*values)) # create a dictionary of lits data = {'numbers':[1, 2, 3, 4, 5, 6], 'colors':['red','green', 'yellow', 'blue', 'brown'], 'fruits':['apples','Avocados', 'Pineapples', 'Blueberries', 'Dates']} print('Input Dictionary of lits:', data) print() # Convert dictionary to CSV dict_to_csv(data, 'Output\output2.csv') print('Output:') print('The converted CSV file is created successfully in our working directory.')
輸出
Input Dictionary of lits: {'numbers': [1, 2, 3, 4, 5, 6], 'colors': ['red', 'green', 'yellow', 'blue', 'brown'], 'fruits': ['apples', 'Avocados', 'Pineapples', 'Blueberries', 'Dates']} Output: The converted CSV file is created successfully in our working directory.
下圖顯示了在工作目錄中建立的轉換後的 csv 檔案。

使用 pandas 庫
pandas 庫提供了許多其他功能來處理和操作資料,例如資料過濾、聚合、排序等等。它支援使用 to_csv() 函式從 DataFrame 寫入 CSV 檔案。
示例
在這種方法中,我們首先從字典列表建立一個 pandas DataFrame,然後我們將使用 to_csv() 方法從 DataFrame 建立一個 CSV 檔案。
讓我們看一個使用 pandas 庫將字典列表轉換為 CSV 檔案的示例。
import pandas as pd def dict_to_csv(dictionary, filename): df = pd.DataFrame(dictionary) df.to_csv(filename, index=False) # create a dictionary of lits data = {'nums':[1, 2, 3, 4, 5, 6], 'states':['UP','Tamil Nadu', 'Telangana', 'Gujarat', 'UP', 'Tamil Nadu'], 'cities':['Agra','Chennai', 'Hyderabad', 'Surat', 'Lucknow', 'Coimbatore']} print('Input Dictionary of lits:', data) print() # Convert dictionary to CSV dict_to_csv(data, 'Output\output.csv') print('Output:') print('The converted CSV file is created successfully in our working directory.')
輸出
Input Dictionary of lits: {'nums': [1, 2, 3, 4, 5, 6], 'states': ['UP', 'Tamil Nadu', 'Telangana', 'Gujarat', 'UP', 'Tamil Nadu'], 'cities': ['Agra', 'Chennai', 'Hyderabad', 'Surat', 'Lucknow', 'Coimbatore']} Output: The converted CSV file is created successfully in our working directory.
下圖顯示了在工作目錄中建立的轉換後的 csv 檔案。

以上兩個示例演示了使用 Python 程式設計將字典列表轉換為 CSV 檔案的不同方法。