首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中将嵌套列表映射到可迭代字典

如何在Python中将嵌套列表映射到可迭代字典
EN

Stack Overflow用户
提问于 2021-08-28 18:04:12
回答 2查看 56关注 0票数 0

我在配对列表中存储了类和它们的先决条件的列表:

代码语言:javascript
复制
classes = [
    ['Calculus', 'Geometry'],
    ['Trigonometry', 'Algebra'],
    ['Geometry', 'Trigonometry']
]

我想要将这些类映射到特定的索引,以便使用以下内容为课程构建图表:

代码语言:javascript
复制
course_index = {
    0: 'Calculus'
    1: 'Geometry' 
    2: 'Trigonometry'
    3: 'Algebra'
}

获取新的整数映射mapped_classes = [[0,1],[2,3],[1,2]]

为了创建course_index,我创建了一个空的索引dict,并从classes添加了course_index中没有的项

代码语言:javascript
复制
course_index = {key: "" for key in range(4)}

index = 0
for x, y in classes:
    if x not in course_index.values(): 
        course_index[index] = x
        index += 1
    if y not in course_index.values(): 
        course_index[index] = y
        index += 1

我不明白的是如何将classes映射到它们对应的course_index来创建mapped_classes

有没有什么映射函数可以简化这个过程?我尝试解决这个问题的方法如下,我不能改变当前类列表中的值。对于嵌套循环,它的效率也非常低。

代码语言:javascript
复制
for key, val in course_index: 
    for x, y in classes:
        if x = val: 
            x = key
        if y = val: 
            y = key
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-28 18:12:32

颠倒course_index字典。枚举所有类。

代码语言:javascript
复制
invert = {v: k for k, v in course_index.items()}
for i, row in enumerate(classes):
    classes[i][0] = invert[classes[i][0]]
    classes[i][1] = invert[classes[i][1]]
print(classes)
票数 3
EN

Stack Overflow用户

发布于 2021-08-28 18:12:16

试着使用这样的东西:

代码语言:javascript
复制
mapped_classes = classes.copy()
for key, val in course_index.items():
    for e, f in enumerate(classes):
        for x in f:
            if x == val:
                mapped_classes[e][mapped_classes[e].index(x)] = key
print(mapped_classes)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68966976

复制
相关文章

相似问题

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