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

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

我认为这应该是一项我似乎无法解决的非常简单的任务。

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

我最接近的是以下(我从其他人的帖子中得到):

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

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

有任何想法吗?


慕斯709654
浏览 3008回答 3
3回答

四季花海

你正在使用DictWriter.writerows()哪个需要一个dicts列表,而不是一个dict。你DictWriter.writerow()想写一行。DictWriter.writeheader()如果你想要一个csv文件的标题,你也会想要使用。您还可能要检查出的with声明为打开文件。它不仅具有更多的pythonic和可读性,而且可以处理关闭,即使发生异常时也是如此。进行这些更改的示例: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,testing1,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)。

慕的地8271018

为什么使用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.我的回答只对第二个目的有用。并且还要考虑记住所有这些模块及其各自功能的痛苦:P
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python