Преобразование плохо сформированного словаря с пандами
У меня плохо отформатированный словарь, который использует числа как ключи во вложенном словаре, и не все ключи на верхнем уровне имеют одинаковое количество вложенных элементов. Пример:
{'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']}]