Преобразование диктата в электронную таблицу - PullRequest
0 голосов
/ 23 апреля 2011

Мои данные - это диктовки вроде этого (но с гораздо большим количеством полей и имен):

{'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'}]

Какой самый простой способ получить мои диктовки в файл CSV?

Я полагаюЗаписи также должны быть в алфавитном порядке, но это достаточно просто сделать в программном обеспечении для электронных таблиц.

Ответы [ 2 ]

4 голосов
/ 23 апреля 2011
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' к каждому элементу данных).Вы, наверное, не против этого.Это немного более эффективно, чем альтернатива (копирование).
  • Это не самая яркая однострочная программа, но она очень удобочитаема, что IMHO более важно
1 голос
/ 23 апреля 2011

Вы можете использовать список-понимание, чтобы получить новый список диктов:

>>> [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'}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...