扁平嵌套字典,压缩键

扁平嵌套字典,压缩键

假设您有一本字典,如下所示:

{'a': 1,
 'c': {'a': 2,
       'b': {'x': 5,
             'y' : 10}},
 'd': [1, 2, 3]}

你会如何把它压平成这样的东西:

{'a': 1,
 'c_a': 2,
 'c_b_x': 5,
 'c_b_y': 10,
 'd': [1, 2, 3]}


弑天下
浏览 512回答 3
3回答

蝴蝶不菲

基本上,就像您平平嵌套列表一样,您只需做额外的工作,按key/value迭代dict,为新字典创建新键,并在最后一步创建字典。import collectionsdef flatten(d, parent_key='', sep='_'):     items = []     for k, v in d.items():         new_key = parent_key + sep + k if parent_key else k        if isinstance(v, collections.MutableMapping):             items.extend(flatten(v, new_key, sep=sep).items())         else:             items.append((new_key, v))     return dict(items)>>> flatten({'a': 1, 'c': {'a': 2, 'b': {'x': 5, 'y' : 10}}, 'd': [1, 2, 3]})     {'a': 1, 'c_a': 2, 'c_b_x': 5, 'd': [1, 2, 3], 'c_b_y': 10}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python