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 檔案的不同方法。

更新於:2023年8月29日

瀏覽量 1K+

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告