将字典转换为电子表格
我的数据是一个字典(dict)里面又包含了很多字典,像这样(其实字段和名字要多得多):
{'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'}]
有没有简单的方法可以把我的字典(dict of dicts)转换成CSV文件呢?
我想条目也应该按名字的字母顺序排列,不过在电子表格软件里处理这个也不难。
2 个回答
1
你可以用列表推导式来创建一个新的字典列表:
>>> [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'}}
4
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
(给每个数据添加一个 'name' 键)。你可能对此不在意。这种做法比其他方法(比如复制)更高效。 - 这不是最炫酷的一行代码解决方案,但它非常易读,在我看来,这更重要。