У меня есть список словарей, в которых некоторые значения являются строками, а остальные значения являются целыми числами:Создание нового словаря из списка словарей в Python
list_countries = [{'country' : 'Suriname',
'population' : 532724,
'capital': 'Paramaribo',
'anthem': 'God zij met ons Suriname'},
{'country' : 'Sweden',
'population' : 9683248,
'capital': 'Stockholm',
'anthem': 'Du gamla, Du fria'},
...]
Я хотел бы изменить каждый из них кнопочная пары значений в один большой новый словарь. Тем не менее, мой подход имеет проблемы:
dict_countries = { 'countries': [],
'pop': [],
'capital_city': [],
'national_anthem': [] }
Я тогда перебирать и добавить все значения с .extend()
.
for dictionary in list_countries:
dict_countries['countries'].extend(dictionary['country'])
dict_countries['pop'].extend(dictionary['population'])
dict_countries['capital_city'].extend(dictionary['capital'])
dict_countries['national_anthem'].extend(dictionary['anthem'])
Однако это не работает. Все строки разбиты по буквам. Для целых чисел я получаю ошибку:
TypeError: 'int' object is not iterable
Каков правильный подход?
EDIT: Я считаю, что есть значение для каждой клавиши. Однако, скажем так, нет. Как бы я мог переписать выше, чтобы добавить NaN
, если не найдено никакого значения.
Рассмотрим, если вы _really_ хотите сделать это. Ваш список списков немного хрупкий: если какой-либо из списков выходит из строя, все это становится беспорядком. Альтернативой является диктофон dicts, индексированный по стране. –
@ PM2Ring Я собираюсь импортировать этот словарь в pandas DataFrame. Возможно, я снова задам вопрос, как это сделать. – EB2127