Estrutura condicional não reconhece variáveis existentes como True

Estou fazendo um exercício do curso de computação, e estamos trabalhando em equipe. Tenho aprendido bastante Python, mas existem comandos que não entendo. Por exemplo o código abaixo não está comparando os valores que estão na lista com os do dicionário história, não estou entendendo o porquê.

Segue o código abaixo:

 from time import sleep

def linha():
    print('~'*30)


def mostrarTemas(): #No código principal, vai servir a função de ewerton
    for i in range(len(historias)):
        if not historias[i]['tema'] in lista:
           lista.append(historias[i]['tema'])  # Se tiver tema repetido - Deixa apenas um
           
    for p, i in enumerate(lista):
        print(f' {p + 1}- \033[1;33m{i}\033[m')  # Mostra pro usuário os temas disponiveis
        sleep(0.3)


#Lista de histórias, todas conforme o professor cadastrar.
lista = []
historias = [{'tema':'Princesas', 'titulo':'A princesa', 'A princesa':'Texto da Princesa aqui'},
             {'tema':'Super Herois', 'titulo':'Iron Man 2', 'Iron Man 2':'A historia aqui'},
             {'tema':'Princesas', 'titulo':'A princesa 2', 'A princesa 2':'Texto da princesa 2 aqui'},
             {'tema':'Carros', 'titulo':'Carros 1', 'Carros 1':'Texto para carros 1'}]

linha()
mostrarTemas()
linha()

escolha = int(input(('Digite o número que está relacionado com o tema a sua escolha: ')))
historia = dict()
for i in range(len(historias)):
    if escolha == i+1:
        # se tiver mais de um tema igual faz um random pra escolher uma aleatoriamente
        for historia in historias:       #Problema é o que quando existe um tema repetido
            print(historia)
            if lista[i] in historia: # Nunca dar True
               print(historia)
               print(f'\033[1;30m{historia["titulo"]}\033[m')  #Quando faço a escolha ele mostra o errado
       
#        print(f"Tema:   {lista[i]}")
#        print(f'\033[1;30m{historias[lista[i]][titulo.__str__()]}\033[m')

#Ai vem as perguntasTexto pré-formatado

Boa tarde. Faltou a pergunta.

Sugestões:

Se quer eliminar itens repetidos, use um set, assim você não precisa verificar se o elemento já existe (o próprio set cuida disso para você). A desvantagem é que um set não garante a ordem dos elementos, então a lista de temas pode mudar de ordem a cada execução.

Você pode passar um valor inicial para enumerate, assim não precisa somar 1 (mas vai precisar subtrair 1 do valor digitado pelo usuário).

Não use variáveis globais. Faça a função mostrarTemas receber as histórias como parâmetro, e retornar a lista de temas.

Para ler a escolha do usuário, fiz um loop que valida o valor digitado, e caso seja inválido, pede que digite novamente.

Ficaria assim:

def linha():
    print('~' * 30)

# recebe as histórias como parâmetro
def mostrarTemas(historias):
    temas = set()
    for historia in historias:
       temas.add(historia['tema']) # o set já verifica se o elemento é repetido

    temas = list(temas) # transforma o set em lista, pois set's não tem ordem definida
    for i, tema in enumerate(temas, start=1): # mostra os temas
        print(f' {i}- {tema}')
    return temas # retorna a lista de temas

# Lista de histórias
historias = [{'tema':'Princesas', 'titulo':'A princesa', 'A princesa':'Texto da Princesa aqui'},
             {'tema':'Super Herois', 'titulo':'Iron Man 2', 'Iron Man 2':'A historia aqui'},
             {'tema':'Princesas', 'titulo':'A princesa 2', 'A princesa 2':'Texto da princesa 2 aqui'},
             {'tema':'Carros', 'titulo':'Carros 1', 'Carros 1':'Texto para carros 1'}]

linha()
temas = mostrarTemas(historias)
linha()

while True: # enquanto a escolha não for válida, pede que digite novamente
    try:
        escolha = int(input(('Digite o número que está relacionado com o tema a sua escolha: ')))
        if 1 <= escolha <= len(temas):
            break # escolha válida, sai do while
        else:
            print(f'Número deve estar entre 1 e {len(temas)}')
    except ValueError: # se não digitar número, dá erro
        print('Digite um número válido')

tema_escolhido = temas[escolha - 1]
for historia in historias:
    # se a história tem o tema escolhido, imprime
    if historia['tema'] == tema_escolhido:
        print(historia)
        print(f'{historia["titulo"]}')

Olá Hugo!

Bom dia!
Muito obrigado!!!
Era isso mesmo o que queria fazer.
Deus te abençoe e proteja!