Преобразование плохо сформированного словаря с пандами

У меня плохо отформатированный словарь, который использует числа как ключи во вложенном словаре, и не все ключи на верхнем уровне имеют одинаковое количество вложенных элементов. Пример:

 {'Option 1': {'0': 'es_LA', '1': 'de_DE', '2': 'fr_FR'}, 'Option 2': {'0': 'de_DE', '1': 'it_IT', '2': 'ja_JP'}}

Желаемый результат - это что-то вроде

 {'category': 'Option 1', 'locales': ['es_LA', 'de_DE', 'fr_FR']}, {'category': 'Option 2', 'locales': ['de_DE', 'it_IT', 'ja_JP']}

Я знаю, что это потребует повторения, но мне трудно понять, как добраться до этой точки, поскольку ключи не все одинаковы. Любая помощь будет оценена.

1 ответ

Вы можете просто использовать простой список - как показано ниже. Мы используемd.items()для перебора каждой пары ключ, значение в исходном словаре. Для каждой пары ключ-значение мы хотим создать новый словарь, состоящий изcategory отображение на ключ, и localesотображение на каждое значение из старого значения словаря. Написано полностью, это эквивалентно:

Код:

>>> d = {'Option 1': {'0': 'es_LA', '1': 'de_DE', '2': 'fr_FR'}, 'Option 2': {'0': 'de_DE', '1': 'it_IT', '2': 'ja_JP'}}
>>> d_new = [{'category': k, 'locales': list(v.values())} for k, v in d.items()]
>>> d_new
[{'category': 'Option 1', 'locales': ['es_LA', 'de_DE', 'fr_FR']},
 {'category': 'Option 2', 'locales': ['de_DE', 'it_IT', 'ja_JP']}]
Другие вопросы по тегам