首页 > 解决方案 > 如何用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。

我怎样才能做到这一点?

标签: pythoncsv

解决方案


对于字典中的每个键,您正在将整个字典写成一行,因此您输出的数据量呈指数级;您为每一行添加标题的事实只会增加损坏。

您需要在此处将每个键值对视为一行:

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])

这会以任意顺序输出键值对;如果您需要特定的排序,请先排序或使用有序的数据结构。


推荐阅读