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+

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.