将Dict of list转换为CSV的Python程序

将Dict of list转换为CSV的Python程序

在字典中,键必须是唯一且不可变的,而值可以是任何类型并且可以有一个值的列表。在字典列表的情况下,每个键指向一个可以包含多个元素的列表。

这是一个字典列表的示例−

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文件。

将Dict of list转换为CSV的Python程序

使用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文件。

将Dict of list转换为CSV的Python程序

上述两个示例演示了使用Python编程将字典中的列表转换为CSV文件的不同方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程