python3字典列表_Python3:展开嵌套字典和字典中的列表

我正在处理一个复杂的嵌套字典和列表数据结构。我需要将数据展平,并使所有嵌套项达到级别0。请参见下面的示例以了解更多信息:{a:1,b:2,c:{c1:[{c11:1,c12:2,c13:3},{c21:1,c22:2,c23:3}],d1:[{d11:1,d12:2,d13:3},{d21:1,d22:2,d23:3}]},x:1,y:2}

我要把这个弄平:

^{pr2}$

我引用了this post中的第一个答案,但它只能在我有嵌套字典的情况下起作用,而如果列表嵌套在字典中,并且在这些列表中嵌套了更多的词典,则不起作用。在

我修改了一些代码以适应我的用例,但是这个代码不起作用def flattenDict(d):

node_map = {}

node_path = []

def nodeRecursiveMap(d, node_path):

for key, val in d.items():

if ((type(val) is not dict)&(type(val) is not list)):

node_map['_'.join(node_path + [key])] = val

if type(val) is list:

def nodeListRecursion(val,node_path):

for element in val:

if ((type(element) is not dict)&(type(element) is not list)) : node_map['_'.join(node_path + [key])] = element

if type(element) is list: nodeListRecursion(element,node_map)

if type(element) is dict: nodeRecursiveMap(element, node_path + [key])

nodeListRecursion(val,node_path)

if type(val) is dict: nodeRecursiveMap(val, node_path + [key])

nodeRecursiveMap(d, node_path)

return node_map

当我把代码粘贴到这里时,缩进变得一团糟。但我真的很感谢你的帮助。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值