我有下面的字典
{
"Africa":{
"All":{"ABC":0,"DEF":0,"GHI":0},
"NA":{"GHI":0},
"EXPORT":{"ABC":0,"DEF":0,"GHI":0},
"RE-EXPORT":{"ABC":0,"DEF":0,"GHI":0}
},
"Asia":{
"All":{"ABC":0,"DEF":0,"GHI":0},
"NA":{"ABC":0,"DEF":0},
"RE-EXPORT":{"ABC":0,"GHI":0}
},
"Australia":{
"All":{"DEF":0,"GHI":0},
"NA":{"ABC":0,"DEF":0,"GHI":0}
}}
我有以下清单
x=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]我需要根据嵌套键计数将列表x分组如下
result = [
[
[1,2,3],
[4],
[5,6,7],
[8,9,10]
],
[
[11,12,13],
[14,15],
[16,17]
],
[
[18,19],
[20,21,22]
]
]我有3个父键(非洲、亚洲、澳大利亚),因此结果将在非洲的主列表中有3个列表--4个键,所以[],[],[]]以及下面的所有3个键,所以[[1,2,3],[],[]]基本上是根据嵌套字典键对值进行分组。
我尝试过递归,但无法做到这一点
发布于 2022-11-26 10:56:18
您可以使用:
start=0
v1=[]
v2=[]
for i in a: # a= dictionary
for j in list(a[i].keys()):
mask=list(a[i][j].keys())
leng=len(mask)
mask[0:leng]=x[start:start+ leng]
start+=leng
v1.append(mask)
v2.append(v1)
v1=[]
print(v2)
'''
[
[[1, 2, 3], [4], [5, 6, 7], [8, 9, 10]],
[[11, 12, 13], [14, 15], [16, 17]],
[[18, 19], [20, 21, 22]],
]
'''https://stackoverflow.com/questions/74581221
复制相似问题