1 回答

TA貢獻(xiàn)1875條經(jīng)驗 獲得超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"),
...
]
然后,您可以根據(jù)元組列表定義 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]
添加回答
舉報