Python-展平嵌套字典,压缩键

假设你有一个像这样的字典:

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

回答:

基本上与展平嵌套列表的方式相同,只需要做额外的工作即可按键/值迭代字典,为新字典创建新键并在最后一步创建字典。

import collections

def 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}

以上是 Python-展平嵌套字典,压缩键 的全部内容, 来源链接: utcz.com/qa/418207.html

回到顶部