用熊猫转换格式不正确的字典

时间:2020-02-02 19:13:30

标签: python python-3.x list dictionary iteritems

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

 {'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 个答案:

答案 0 :(得分:1)

您可以仅使用简单的list-comprehension-如下。我们使用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']}]