如何将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+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告