将字典转换为电子表格

0 投票
2 回答
794 浏览
提问于 2025-04-16 16:17

我的数据是一个字典(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' 键)。你可能对此不在意。这种做法比其他方法(比如复制)更高效。
  • 这不是最炫酷的一行代码解决方案,但它非常易读,在我看来,这更重要。

撰写回答