首页 > 解决方案 > Python:如何向 csv 写入“在线”列表的字典?

问题描述

我希望将我的列表字典写入 csv 文件,我需要按键名对行进行排序:

import csv

dict_of_list = {"key1": [1,2,3], "key2": [4,5,6], "key3": [7,8,9]}

#line bugged corrected bellow:
# keys = sorted(dict_of_list.keys())
writer.writerows(sorted([k, *vs] for k, vs in dict_of_list.items()))


with open("P:/Code/Python/CSV/dict_of_list.csv", "w") as tmp:
    writer = csv.writer(tmp)
    writer.writerows(zip(dict_of_list.items()))

我需要按如下方式订购 csv 文件:

key1, 1, 2, 3
key2, 4, 5, 6
key3, 7, 8, 9

实际上我的输出 csv 是:

"('key1', [1, 2, 3])"
"('key2', [4, 5, 6])"
"('key3', [7, 8, 9])"

我尝试了其他代码,但我只能将键放在标题中或根本没有键。

如果有人能给我一个推动,我将不胜感激。

标签: pythoncsv

解决方案


您可以使用pandas库来代替自己管理文件的写入。

为此,您只需从字典中创建一个 pandas DataFrame(如表格),并将方向设置为orient=index,因为您的字典键应该用作表格的行。然后您只需使用 DataFrame 方法to_csv来编写您的 csv 文件。header=False不需要标头时可以使用该参数。

import pandas as pd
df = pd.DataFrame.from_dict(dict_of_list, orient="index").sort_index()
df.to_csv("test.csv", sep=";", header=False)

推荐阅读