我的数据是像这样的词典(但有更多的字段和名称):
{'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'}]
将dicts的词汇变成CSV文件的最简单方法是什么?
我认为这些条目也应按字母顺序排列,但这在电子表格软件中很容易做到。
答案 0 :(得分: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'键)。你可能不介意。它比替代(复制)更有效。答案 1 :(得分:1)
您可以使用list-comprehension获取新的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'}]
编辑:d
是你的词:
>>> d
{'Jack': {'age': 15, 'location': 'UK'}, 'Jill': {'age': 23, 'location': 'US'}}