首页 > 解决方案 > 如何将嵌套列表映射到 Python 中的可迭代字典

问题描述

我有一个类列表及其存储在配对列表中的先决条件:

classes = [
    ['Calculus', 'Geometry'],
    ['Trigonometry', 'Algebra'],
    ['Geometry', 'Trigonometry']
]

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

course_index = {
    0: 'Calculus'
    1: 'Geometry' 
    2: 'Trigonometry'
    3: 'Algebra'
}

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

为了创建course_index我创建了一个空索引dict并添加了classes其中不存在的项目course_index

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的 create mapped_classes

是否有一些映射功能可以简化这个过程?我解决这个问题的尝试如下,我无法改变当前类列表中的值。嵌套循环也非常低效。

for key, val in course_index: 
    for x, y in classes:
        if x = val: 
            x = key
        if y = val: 
            y = key

标签: pythonlistdictionarygraphmapping

解决方案


反转 course_index 字典。枚举类。

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)

推荐阅读