将嵌套字典写入CSV

时间:2016-08-05 23:20:49

标签: python csv dictionary

我正在尝试在Python中将嵌套字典写入CSV。我查看了python.org上的csv.DictWriter文档和stackoverflow上的一些示例,但我无法弄清楚最后一部分。这是一个有代表性的数据集:

data = {u'feeds': [{u'feed_code': u'free', u'feed_name': u'Free'}, {u'feed_code': u'paid', u'feed_name': u'Paid'}, {u'feed_code': u'grossing', u'feed_name': u'Grossing'}], u'code': 200}

ColTitle = ['code','feed_code','feed_name']
with open('test.csv','wb') as f:
    w = csv.DictWriter(f, ColTitle)
    w.writeheader()
    for item in data:
        w.writerow({field: data[item]})  ## Part I am stuck on

这就是我想写入我的CSV文件

code feed_code feed_name 
200 free Free
200 paid Paid
200 grossing Grossing

2 个答案:

答案 0 :(得分:0)

代码中的问题是循环。 您希望遍历所有Feed,但实际上是在循环数据。 你的:

for item in data:
    print item
    w.writerow({field: data[item]})  ## Part I am stuck on

这会给你

feeds
code

你想要的是循环遍历Feed,如下所示:

for feed in data[u'feeds']:
    w.writerow(feed)

然而这还不够,因为代码不在每个字段中,但只在数据中声明一次,因此您应该将其更改为在每行中包含代码:

for feed in data[u'feeds']:
    w.writerow(dict(feed, code=data[u'code']))

答案 1 :(得分:0)

关于您要执行的操作的一个棘手的部分是,数据结构中181.59375 182.59375 183.59375 184.59375 -174.78125 -173.78125 -172.78125 -171.78125 列表中的字典在每个字典中都没有u'feeds'值。这可以通过更新每一个来轻松解决,这将允许您一次写出所有这些(虽然它确实改变了数据结构):

u'code'