我有一本格式较差的字典,该字典使用数字作为嵌套字典中的键,并且并非顶层中的所有键都具有相同数量的嵌套项。示例:
{'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']}
我知道这将涉及迭代,但是由于密钥不尽相同,因此很难弄清楚如何达到这一点。任何帮助,将不胜感激。
答案 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']}]