我从另一个脚本收到一个包含各种类型的字典,特别是其他可能包含其他字典作为值的字典或列表.
现在我想要做的是创建一个单一的平面字典.密钥可能在封装的字典中多次出现.对我来说,最内层的关键信息包含最新信息,所以我认为dict.update在消化"内在"字典时适用的是正确的例程."内部"字典我的意思是一本带有最外层字典值的字典.
现在,我理解如何将字典压平1级.我挣扎着用任意多层来压扁它.
我正在处理的字典类型的一个简单示例示例是:
d = {1: {6: {7: {2: {'a'}}}}, 2: 'b', 3: {4: {2: 'c'}}, 5: ['a', 'b', {1: 'a'}]}
Run Code Online (Sandbox Code Playgroud)
我的尝试适用于单一深度:
dd = dict()
for k, v in d.items():
if isinstance(v, dict):
dd.update(v)
elif isinstance(v, list):
for el in v:
if isinstance(el, dict):
dd.update(el)
dd[k] = [el for el in v if not isinstance(el, dict)]
else:
dd[k] = v
Run Code Online (Sandbox Code Playgroud)
这给了我:
Out[56]: {6: {7: {2: {'a'}}}, 2: 'b', 4: {2: 'c'}, 1: 'a', 5: ['a', 'b']}
Run Code Online (Sandbox Code Playgroud)
它应该给予的是: …