1

我有一个格式很差的字典,它使用数字作为嵌套字典中的键,并且并非顶层中的所有键都具有相同数量的嵌套项。例子:

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

我知道这将涉及迭代,但我很难弄清楚如何达到这一点,因为键并不完全相同。任何帮助,将不胜感激。

4

1 回答 1

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']}]
于 2020-02-03T08:51:46.900 回答