首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在嵌套字典中计数键,并在每个键下创建包含计数的列表

在嵌套字典中计数键,并在每个键下创建包含计数的列表
EN

Stack Overflow用户
提问于 2022-11-26 10:01:57
回答 1查看 37关注 0票数 -1

我有下面的字典

代码语言:javascript
复制
{
"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}
}

}

我有以下清单

代码语言:javascript
复制
x=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]

我需要根据嵌套键计数将列表x分组如下

代码语言:javascript
复制
    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],[],[]]基本上是根据嵌套字典键对值进行分组。

我尝试过递归,但无法做到这一点

EN

回答 1

Stack Overflow用户

发布于 2022-11-26 10:56:18

您可以使用:

代码语言:javascript
复制
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]],
]

'''
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74581221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档