将dicts的词典转换为电子表格

时间:2011-04-23 14:45:25

标签: python csv dictionary

我的数据是像这样的词典(但有更多的字段和名称):

{'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文件的最简单方法是什么?

我认为这些条目也应按字母顺序排列,但这在电子表格软件中很容易做到。

2 个答案:

答案 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'}}