Печать определенных строк разного цвета с помощью termcolor.colored?

Я хотел бы напечатать определенные строки в разных цветах в Python. Мне нужно изменить код:

board_p1 = []
board_pc = []

board_size=6

for x in range(board_size):
    board_p1.append(["[W]"] * board_size)
    board_pc.append(["[W]"] * board_size)

def print_board(board):
    if board == board_p1:
        print colored("\n   Computers Board:    ",attrs=['underline'])
        for row in board:
            print " ".join(colored(element,"cyan") if element != "[X]" else colored(element,"red") if element != "[H]" else colored(element,"magenta") for element in row)
    if board == board_pc:
        print colored("\n    Players Board:     ",attrs=['underline'])
        for row in board_pc:
            print " ".join(colored(element,"cyan") if element != "[S]" else colored(element,"green") if element != "[X]" else colored(element,"red") if element != "[H]" else colored(element,"magenta") for element in row)

так что когда в списке a [H] будет напечатано как пурпурный, [X] будет красным, и т.д. У меня может быть выход вроде:

введите описание изображения здесь

У меня возникают трудности с:

print " ".join(colored(element,"cyan") if element != "[S]" else colored(element,"green") if element != "[X]" else colored(element,"red") if element != "[H]" else colored(element,"magenta") for element in row)

для печати указанным способом.

Q: Как изменить/отредактировать строку кода выше, чтобы, если [X] отображается в списке, который он напечатал как красный, [S] зеленый и [H ] в пурпуре?

Ответ 1

Хотя следующее будет правильно анализироваться из-за добавленных круглых скобок:

print " ".join(colored(element,"cyan") if element != "[S]" else (colored(element,"green") if element != "[X]" else (colored(element,"red") if element != "[H]" else colored(element,"magenta"))) for element in row)

Однако из-за отрицательных условий я не смог сказать, будет ли оно производить отображение, описанное и изображенное в примере в вашем вопросе.

Но исходя из этого описания, я бы предположил, что было бы лучше использовать такой словарь:

element_colors = {'[W]': 'cyan', '[X]': 'red', '[S]': 'green', '[H]': 'magenta'}

print " ".join(colored(element, element_colors[element]) for element in row)