我有一个字典,其格式如下:
Sigs_dict['a']=[1,2,3,4,5]
Sigs_dict['b']=[6,7,8,9,0]
Sigs_dict['c']=[1,2,3,4,5]
我想要一个 csv 文件,其中第一行是字典的键,下一行是列形状的向量。喜欢:
a b c
1 6 1
2 7 2
3 8 3
4 9 4
5 0 5
我现在只有第一行,但我不明白如何正确编写向量。
with open(fileName[0], 'w') as f:
writer = csv.writer(f, delimiter = ' ')
writer.writerow(Sigs_dict.keys())
#missing something here
所有向量的长度都相同。
使用 zip
built-in 的简单选项(没有 pandas
依赖,尽管 pandas
允许更少的代码行):
my_dict = {}
my_dict['a'] = [1, 2, 3, 4, 5]
my_dict['b'] = [6, 7, 8, 9, 0]
my_dict['c'] = [1, 2, 3, 4, 5]
# get keys and values in the same order, in this case, sorted by key
# key_list = sorted(my_dict.keys())
key_list = [k for k, _ in sorted(my_dict.items())]
val_list = [v for _, v in sorted(my_dict.items())]
with open(fileName[0], 'w') as f:
writer = csv.writer(f, delimiter=' ')
writer.writerow(key_list)
for row in zip(*val_list):
writer.writerow(row)
请注意我是如何使用星号 (*
) 解压 val_list
的;如果不拆包,这将无法按预期工作。
编辑我的代码以具有固定的顺序,以防止列标题和内容之间不匹配。
我是一名优秀的程序员,十分优秀!