我正在尝试在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
答案 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'