猿问

将字典中的多个数组写入列

我有一本字典,看起来像:


dict = {'a':[1,2,3],

   'b':[4,5,6],

   'c':[7,8,9]}

我想将每个数组写入文件中的一列,输出如下所示:


1 4 7

2 5 6

3 6 9

其中值以制表符分隔。到目前为止,我已经尝试过:


import csv

with open('text.csv', 'w') as f:

    writer = csv.writer(f, delimiter='\t')

    for k,array in dict.items():

        writer.writerows(zip(array))

但这只是在单列中打印数字 1 到 9。有人可以帮我弄这个吗?


(有没有更有效的方法来存储字典中显示的多个数组,以便更容易地写入文件?)


慕无忌1623718
浏览 209回答 3
3回答

胡子哥哥

您可以zip在解压 dict 值后使用:with open('text.csv', 'w') as f:    writer = csv.writer(f, delimiter='\t')    writer.writerows(zip(*d.values()))

慕妹3146593

如果您愿意使用 Pandas,那将相当简单。我还建议不要dict用作变量名,因为它是一个内置函数。import pandas as pdarr_dict = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}pd.DataFrame(arr_dict).to_csv('test.csv', index=False, sep='\t')如果数组的长度不同,则您必须更有创意。这篇文章中有很多例子,其中一个在这里:pd.DataFrame.from_dict(arr_dict, orient='index').T

至尊宝的传说

您可以从这里修改,然后将输出写入文件。我相信有更清洁的方法可以做到这一点,但这可以满足您的要求。尽管这假设行的长度都相同。如果所有列都没有数据,则不会产生所需的输出。# data indict = {'a':[1,2,3],   'b':[4,5,6],   'c':[7,8,9]}cols = []for k, v in dict.items():    cur_col = 0    for i in v:        try:            cols[cur_col].append(str(i))            cur_col += 1        except IndexError as e:            cols.append([str(i)])            cur_col +=1    cur_col = 0for row in cols:    print("\t".join(row))输出:1   4   72   5   83   6   9
随时随地看视频慕课网APP

相关分类

Python
我要回答