2011-04-23 76 views
0

我的数据是这样的类型的字典词典(但有更多的领域和名称):转换类型的字典词典到电子表格

{'Jack': {'age': 15, 'location': 'UK'}, 
'Jill': {'age': 23, 'location': 'US'}} 

我想将它导出到这样一个电子表格:

Name Age Location 
Jack 15 UK 
Jill 23 US 

但显然csv.DictWriter希望看到这样类型的字典列表:

[{'name': 'Jack', 'age': 15, 'location': 'UK'}, 
{'name': 'Jill', 'age': 23, 'location': 'US'}] 

什么是让米最简单的方法y字典到CSV文件?

我想这些条目也应该按字母顺序排列,但是这在电子表格软件中很容易实现。

回答

3
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) 

datalist将保持期望的结果。注:

  • 这也修改mydict(为每个数据添加'名称'键)。你可能不介意。这比替代(复制)更有效率。
  • 这不是最华丽的单行路到做它,但它是非常具有可读性,这恕我直言,是
+1

+ 1:简单易读。 – 2011-04-23 15:01:09

+0

alphabetizing只是'在排序(mydict)'中的名称' – endolith 2011-04-23 15:15:29

0

您可以使用列表理解让您的新类型的字典的名单更重要的是:

>>> [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'}] 

编辑:d是你的字典:

>>> d 
{'Jack': {'age': 15, 'location': 'UK'}, 'Jill': {'age': 23, 'location': 'US'}} 
+0

这比其他示例更容易理解。虽然它更快吗? – endolith 2011-04-25 14:33:47