python - 如何用Python垂直编写一个csv?
问题描述
我想要一个这样设计的 CSV:
A B C D
------ ----- ----- -----
v1 v11 v12 v13
v2 v21 v22 v23
v3 v31 v32 v33
我有一本这样的字典:
{"v1": ["v11", "v12", "v13"], "v2": ["v21", "v22", "v23"], "v3": ["v31", "v32", "v33"]}
我已经尝试过了:
with open("cyclesAndSignalChange.csv", 'wb') as csvfile:
wr = csv.DictWriter(csvfile, cycle_with_signal_change.keys(), delimiter = ' ')
for i in cycle_with_signal_change:
wr.writeheader()
wr.writerow(cycle_with_signal_change)
但这只是给了我一个 1GB 的大文件,而我的数据却是 1MB。
我怎样才能做到这一点?
解决方案
对于字典中的每个键,您正在将整个字典写成一行,因此您输出的数据量呈指数级;您为每一行添加标题的事实只会增加损坏。
您需要在此处将每个键值对视为一行:
with open("cyclesAndSignalChange.csv", 'wb') as csvfile:
wr = csv.writer(csvfile, delimiter=' ')
wr.writerow(['A', 'B', 'C', 'D'])
for key, value in cycle_with_signal_change.items():
wr.writerow([key, *value])
这会以任意顺序输出键值对;如果您需要特定的排序,请先排序或使用有序的数据结构。
推荐阅读
- javascript - 如何在 getusermedia 中更改 640*480 分辨率的 FPS?
- android - 无法更新 React-native
- javascript - 如何在 HTML 构建的表单中使用 JavaScript 对某些总值进行排名?
- python - 如何使用学生的功能来排序他们的平均值?
- excel - VBA插入列标题并在列上填充公式
- c# - 在包含数值的字符串字段上使用 datareader.getString() 时出现 InvalidCastException
- angular - jasmine callFake 未被使用;真正的函数仍然被调用
- python - CTRL_C_EVENT 发送到子进程杀死父进程
- gtk3 - 在没有 UI 的情况下更改选择后,TreeView 多选无法正常工作
- java - Java结合类正确