如何將 Python 字典儲存到 CSV 檔案?


在 Python 中,可以使用 CSV 模組將字典儲存到 CSV 檔案。此過程略微取決於字典的結構。

通常,CSV 檔案 的每一行對應表格中的一行,行中的每個值用逗號分隔。CSV 檔案廣泛使用,因為它們易於讀取和寫入(處理檔案),並且易於以字串形式傳輸資料。

常用方法

將 Python 字典儲存到 CSV 檔案有多種場景,本文重點介紹以下幾種常用方法。

  • 使用簡單字典(鍵值對):成對專案的集合,其中每個唯一鍵都稱為值。

  • 使用巢狀字典或列表字典:列表字典包含鍵,其中每個鍵都稱為值的列表。

  • 使用值為巢狀字典的字典:主字典中的每個鍵都指向另一個字典。

簡單字典

如果字典結構很簡單(鍵值對),則可以直接儲存,其中鍵作為列,值作為行。

示例

在下面的程式碼中,藉助open() 函式'W'模式開啟 CSV 檔案,並使用csv.writer處理行寫入。

import csv

# Simply dictionary
my_dict = {'Name': 'Robert', 'Age': 27, 'City': 'Mumbai'}

# Specify the CSV file name
csv_file = 'file.csv'

# Writing to CSV file
with open(csv_file, 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['Key', 'Value'])
	
    # Write data
    for key, value in my_dict.items():
        writer.writerow([key, value])

print(f"Dictionary saved to {csv_file}")

輸出

Dictionary saved to file.csv

巢狀字典

如果字典包含巢狀字典或列表(稱為巢狀字典),則可以將其儲存為每行表示一個專案的格式。

示例

在下面的程式碼中,字典中的每個鍵對應一列,每個包含值的列表對應 CSV 檔案中的每一行。

import csv

# Example dictionary of lists
Employee_dict = {
    'Employee_ID': [101,102,103],
    'NAME': ['Robert', 'John','Vikram'],
    'City': ['Mumbai', 'Chennai', 'Hyderabad']
}

# Specify the CSV file name
csv_file = 'File.csv'

# Writing to CSV file
with open(csv_file, 'w', newline='') as file:
    writer = csv.writer(file)
    # Write header
    writer.writerow(Employee_dict.keys())
    # Write data
    rows = zip(*Employee_dict.values())
    writer.writerows(rows)

print(f"Dictionary saved to {csv_file}")

輸出

Dictionary saved to file.csv

值為巢狀字典

如果字典的值本身就是字典,則可能需要先將其展平,這意味著將這種巢狀結構轉換為扁平的 CSV 格式。

示例

在下面的程式碼中,我們建立一個巢狀字典,外部字典的鍵對應於其中一列,內部字典的鍵值對成為其餘列。

import csv

# Example nested dictionary
Employee_dict = {
    'Robert': {'Age': 30, 'City': 'Mumbai'},
    'John': {'Age': 25, 'City': 'Chennai'},
    'Vikram': {'Age': 35, 'City': 'Hyderabad'}
}

# Specify the CSV file name
csv_file = 'File.csv'

# Writing to CSV file
with open(csv_file, 'w', newline='') as file:
    writer = csv.DictWriter(file, fieldnames=['Name', 'Age', 'City'])
    writer.writeheader()
    for name, details in Employee_dict.items():
        row = {'Name': name}
        row.update(details)
        writer.writerow(row)

print(f"Dictionary saved to {csv_file}")

輸出

Dictionary saved to File.csv

更新於:2024年9月23日

42K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告