Converting a dict of dicts into a spreadsheet
My data is a dict of dicts like this (but with a lot more fields and names):
{'Jac开发者_如何学Ck': {'age': 15, 'location': 'UK'}, 
 'Jill': {'age': 23, 'location': 'US'}}
I want to export it to a spreadsheet like this:
Name  Age  Location
Jack  15   UK
Jill  23   US
But apparently csv.DictWriter wants to see a list of dicts like this:
[{'name': 'Jack', 'age': 15, 'location': 'UK'},
 {'name': 'Jill', 'age': 23, 'location': 'US'}]
What's the simplest way to get my dict of dicts into a CSV file?
I suppose the entries should be in alphabetical name order, too, but that's easy enough to do in the spreadsheet software.
mydict = {'Jack': {'age': 15, 'location': 'UK'}, 
          'Jill': {'age': 23, 'location': 'US'}}
datalist = []
for name in mydict:
  data = mydict[name]
  data['name'] = name
  datalist.append(data)
And datalist will hold the desired result. Notes:
- This also modifies mydict(adding the 'name' key to each datum). You probably don't mind about that. It's a bit more efficient than the alternative (copying).
- It's not the most flashy one-line-way-to-do-it, but it's very readable, which IMHO is more important
You can use list-comprehension to get your new list of dicts:
>>> [dict(zip(['name'] + attrs.keys(), [name] + attrs.values())) \  
    for name, attrs in d.iteritems()]
[{'age': 23, 'location': 'US', 'name': 'Jill'},
 {'age': 15, 'location': 'UK', 'name': 'Jack'}]
EDIT: d is your dict:
>>> d
 {'Jack': {'age': 15, 'location': 'UK'}, 'Jill': {'age': 23, 'location': 'US'}}
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论