1 回答

TA贡献1875条经验 获得超3个赞
您拥有的是一个三向映射,它最简洁地使用元组列表来表示:
# Not clear if you want "" or None to represent the non-existent System-B
# equivalent of System-A "4"
mapping = [
("4", "", "X0"),
("5", "4", "X0"),
("5*", "5", "X1"),
...
]
然后,您可以根据元组列表定义 6 个 X->Y 映射中的任何一个。
from operator import itemgetter
a_to_b = dict(map(itemgetter(0, 1), mapping))
b_to_a = dict(map(itemgetter(1, 0), mapping))
a_to_c = dict(map(itemgetter(0, 2), mapping))
c_to_a = dict(map(itemgetter(2, 0), mapping))
b_to_c = dict(map(itemgetter(1, 2), mapping))
c_to_b = dict(map(itemgetter(2, 1), mapping))
您可以通过将 O(1) conversons 换成 O(n) 查找来最小化存储(并不是说我们一开始就使用了很多)。
def convert(sys_from, sys_to, grade):
sys_from = {"A": 0, "B": 1, "C": 2}[sys_from]
sys_to = {"A": 0, "B": 1, "C": 2}[sys_to]
for grade in mapping:
if grade[sys_from] == grade:
return grade[sys_from]
添加回答
举报