转换类型的字典词典到电子表格
问题描述:
我的数据是这样的类型的字典词典(但有更多的领域和名称):转换类型的字典词典到电子表格
{'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文件?
我想这些条目也应该按字母顺序排列,但是这在电子表格软件中很容易实现。
答
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
(为每个数据添加'名称'键)。你可能不介意。这比替代(复制)更有效率。 - 这不是最华丽的单行路到做它,但它是非常具有可读性,这恕我直言,是
答
您可以使用列表理解让您的新类型的字典的名单更重要的是:
>>> [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
+ 1:简单易读。 – 2011-04-23 15:01:09
alphabetizing只是'在排序(mydict)'中的名称' – endolith 2011-04-23 15:15:29