Python 如何将嵌套列表映射到可迭代字典
How to map a nested list to a iterable dictionary in Python
我有一个 classes 的列表及其存储在配对列表中的先决条件:
classes = [
['Calculus', 'Geometry'],
['Trigonometry', 'Algebra'],
['Geometry', 'Trigonometry']
]
我想将这些 class 映射到特定索引,以使用类似以下内容为课程构建图表:
course_index = {
0: 'Calculus'
1: 'Geometry'
2: 'Trigonometry'
3: 'Algebra'
}
获取新的整数映射mapped_classes = [[0,1],[2,3],[1,2]]
为了创建 course_index
,我创建了一个空的索引 dict
并添加了 classes
中 course_index
[=23= 中不存在的项目]
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
.
有没有什么映射函数可以简化这个过程?我尝试解决这个问题如下,我无法改变当前 class 列表中的值。嵌套循环的效率也很低。
for key, val in course_index:
for x, y in classes:
if x = val:
x = key
if y = val:
y = key
尝试使用这样的东西:
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)
反转 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)
我有一个 classes 的列表及其存储在配对列表中的先决条件:
classes = [
['Calculus', 'Geometry'],
['Trigonometry', 'Algebra'],
['Geometry', 'Trigonometry']
]
我想将这些 class 映射到特定索引,以使用类似以下内容为课程构建图表:
course_index = {
0: 'Calculus'
1: 'Geometry'
2: 'Trigonometry'
3: 'Algebra'
}
获取新的整数映射mapped_classes = [[0,1],[2,3],[1,2]]
为了创建 course_index
,我创建了一个空的索引 dict
并添加了 classes
中 course_index
[=23= 中不存在的项目]
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
.
有没有什么映射函数可以简化这个过程?我尝试解决这个问题如下,我无法改变当前 class 列表中的值。嵌套循环的效率也很低。
for key, val in course_index:
for x, y in classes:
if x = val:
x = key
if y = val:
y = key
尝试使用这样的东西:
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)
反转 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)