python - 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])"
我尝试了其他代码,但我只能将键放在标题中或根本没有键。
如果有人能给我一个推动,我将不胜感激。
解决方案
您可以使用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)
推荐阅读
- javascript - 获取错误未捕获的类型错误:无法读取未定义的属性“toLowerCase”
- python-3.x - 如果时间序列不在适当的时间间隔内,python中是否有函数可以找出时间序列的时间总和?
- c# - C# Winform MouseEnter 事件不起作用
- css - 如何使用样式组件通过动态名称设置背景图像?
- ruby - 需要帮助使用 Rails 5 进行单元测试以更新操作始终在 assert_equals 上失败
- xamarin.ios - 如何做一个 Xamarin.iOS 折叠单元
- python-2.7 - Django 复选框和进度条
- php - get() 不起作用,但 First() 起作用。我需要使用 get() 来获取我的所有数据
- windows - 无法拉取 iis 映像并在 windows10 上使用 Docker 工具箱运行它
- python - 如何更改不正确的 Django 路径(django.__path__)?