如何将一个Python字典写入一个csv文件?

我有我认为应该是一个非常容易的任务,我似乎无法解决。

如何将一个Python字典写入一个csv文件? 我想要的只是将字典键写入文件的第一行,将键值写入第二行。

我最近来的是以下(我从别人的post中得到):

f = open('mycsvfile.csv','wb') w = csv.DictWriter(f,my_dict.keys()) w.writerows(my_dict) f.close() 

问题是,上面的代码似乎只写了第一行的关键,就是这样。 我没有得到写入第二行的值。

有任何想法吗?

您正在使用DictWriter.writerows()期望列表的字典,而不是一个字典。 你想要DictWriter.writerow()写一行。

如果你想为你的csv文件创build一个头文件,你也可以使用DictWriter.writeheader()

你也可能想看看打开文件的 语句 。 这不仅更加pythonic和可读性,但处理闭幕,即使发生exception。

这些更改的示例:

 import csv my_dict = {"test": 1, "testing": 2} with open('mycsvfile.csv', 'wb') as f: # Just use 'w' mode in 3.x w = csv.DictWriter(f, my_dict.keys()) w.writeheader() w.writerow(my_dict) 

其中产生:

 test,testing 1,2 

你的代码非常接近工作。

尝试使用常规的csv.writer而不是DictWriter 。 后者主要用于编写词典列表。

这里有一些代码将每个键/值对写在一个单独的行上:

 import csv somedict = dict(raymond='red', rachel='blue', matthew='green') with open('mycsvfile.csv','wb') as f: w = csv.writer(f) w.writerows(somedict.items()) 

相反,如果你想要一行上的所有键和下一个值,那也很简单:

 with open('mycsvfile.csv','wb') as f: w = csv.writer(f) w.writerow(somedict.keys()) w.writerow(somedict.values()) 

专业提示 :在开发这样的代码时,将编写器设置为w = csv.writer(sys.stderr)以便您可以更轻松地查看正在生成的内容。 逻辑完善后,切换回w = csv.writer(f)

为什么使用csv这个简单的任务?

 keys,values=zip(*my_dict.items()) print >>f, ", ".join(keys) print >>f, ", ".join(values) f.close() 

我用两种方式使用python:

 1. As a proper language where I want all software engineering principles to hold in my code. 2. As a scripting language, where I want to just get something done and the code I write for this is not meant for reuse. 

我的答案只对第二个目的有用。 还要考虑到所有这些模块及其各自function的痛苦