列表到列表字典(Python优化)

Saf*_*fie 2 python arrays optimization performance dictionary

我正在尝试将字符串列表列表(表示井字棋游戏)转换为整数列表列表,以便我可以执行计算。

这些是可能的输入:

A = ['X', 'O', '#']
Run Code Online (Sandbox Code Playgroud)

这些是相应的整数:

B = [1, 0, 99]
Run Code Online (Sandbox Code Playgroud)

所以总的来说,它将执行以下操作:

[['X', 'O', 'O'], ['O', 'X', 'O'], ['O', '#', 'X']] -> [[1, 0, 0], [0, 1, 0], [0, 99, 1]]
Run Code Online (Sandbox Code Playgroud)

我创建了以下函数来执行此翻译,但我确信必须有一种更快、更有效的方法:

def make_integer_matrix(inputs):
    A = ['X', 'O', '#']
    B = [1, 0, 99]
    integer_matrix = []
    #First translate to integers
    for row in inputs:
        row_new = [B[A.index(row[0])], B[A.index(row[1])], B[A.index(row[2])]]
        integer_matrix.append(row_new)
    return integer_matrix
Run Code Online (Sandbox Code Playgroud)

sha*_*678 5

考虑创建映射字典并使用嵌套列表理解

>>> mapping = {'X': 1, 'O': 0, '#': 99}
>>> raw_board = [['X', 'O', 'O'], ['O', 'X', 'O'], ['O', '#', 'X']]
>>> value_board = [[mapping[c] for c in row] for row in raw_board]
>>> value_board
[[1, 0, 0], [0, 1, 0], [0, 99, 1]]
Run Code Online (Sandbox Code Playgroud)