Trabalhar com uma lista de dicionários

Estou criando um programa que não posso usar banco de dados e tenho que me virar com listas e dicionários. A ideia é fazer com que cada dicionário armazene os seguintes itens Tema: ‘tema’, Titulo : ‘Titulo’, Texto: ‘Era uma vez…’. Estou tentando fazer com que o usuário possa apagar ou trocar um desses itens, ou se ele preferir apagar todo o dicionário existente na lista.

Tenho outras dúvidas mais a principal é essa, vou encaminhar o código:

from time import sleep

def cadTemas():
     
        try:
            tema = str(input('Digite o tema: ')).capitalize()
            temas.append(tema)        
            print('\033[31mTema {} armazenado!\033[m'.format(tema))
        except (ValueError, TypeError):
            print("Erro na leitura dos temas!")   
        return temas

def cadHistorias(tema, titulo, historias):    
     try:             
         historia.clear()
         historia['tema'] = tema         
         historia['titulo'] = titulo
         historia[titulo] = str(input('Entre com a historia: '))    
         historias.append(historia.copy())
         print('Historia armazenada!')
         print(historias)
     except (ValueError, TypeError):
            print("Erro na leitura das histórias!")   
     return historias

def mostrarHistorias(historias): 
      print('As historias cadastradas foram: \n')
      for hist in historias:
          print(f'{historia["titulo"]} ')
           
def apagarHistoria(titulo, historias): # A dúvida estar nessa parte
    mostrarHistorias(historias)
    titulo = str(input("Qual a historia que voce deseja apagar?"))
    for hist in historias:
        if (hist[titulo] == titulo):            
            historias = historias.pop(titulo, "Historia apagada") 
    print(historias)        

def trocarHistoria(titulo, historias):
    mostrarHistorias(historias)
    
def mostrarTemas(temas):
    print('Temas cadastrados: ')
    for t in temas:
        print(tema)
            
           
           
           
#=-=-=-=-=-=-=-==-=-=-=-= Menu Principal -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=           

def leiaInt(msg): #Exercicio 113
    while True:
        try:
            n = int(input(msg))
        except (ValueError, TypeError):
            print('\033[31mERRO: por favor, digite um número inteiro válido.\033[m')
            continue
        except (KeyboardInterrupt):
            print('\n\033[31mUsuario preferiu nao digitar esse número.\033[m')
            return 0
        else:
            return n

def linha(tam = 42):
    return '-' * tam

def cabecalho(txt):
    print(linha())
    print(txt)
    print(linha())

def menu(lista):
    cabecalho('MENU PRINCIPAL')   
    for c, iten in enumerate(lista):
        print(f'\033[33m{c+1}\033[m - \033[34m{iten}\033[m')
    
    print(linha())
    opc = leiaInt('\033[32mSua Opcao: \033[m')
    return opc
  

####################################################################   
titulos = list()
temas = list()
cadastro = dict()
historia = dict()
historias = list()
resposta = 1
listaMenu = ['Cadastrar tema', 'Cadastrar historia', 'Mostrar historia', 
             'Apagar historia', 'Mostrar temas', 'Sair do Sistema']

while (resposta != 6):
    resposta = menu(listaMenu)    
    if (resposta == 1):
        mostrarTemas(temas)
        cadTemas()   
        
    elif (resposta == 2):
         mostrarTemas(temas) 
         
         while True:
             tema = str(input('Entre com o tema: '))             
             for t in temas:
                 if (t == tema ):
                     break
                 else:
                     print("Tema inexistente, por favor tente outra vez!")
             
         titulo = str(input('Entre com o ti­tulo da historia: '))         
         cadHistorias(t, titulo, historias)
         
    elif (resposta == 3):        
         mostrarHistorias(historias)
        
    elif (resposta == 4):         
        apagarHistoria(titulo, historias)
        
    elif (resposta == 5):        
        mostrarTemas(temas)        

    elif resposta == (len(listaMenu)):
        cabecalho('Saindo do sistema... Até logo!')
        break
    else:
        print('\033[31mERRO! Digite uma opção válida!\033[m')
        sleep(5)
identar texto pré-formatado por 4 espaços

from time import sleep

def cadTemas():
try:
tema = str(input(‘Digite o tema: ‘)).capitalize()
temas.append(tema)
print(’\033[31mTema {} armazenado!\033[m’.format(tema))
except (ValueError, TypeError):
print(“Erro na leitura dos temas!”)
return temas

def cadHistorias(tema, titulo, historias):
try:
historia.clear()
historia[‘tema’] = tema
historia[‘titulo’] = titulo
historia[titulo] = str(input('Entre com a historia: '))
historias.append(historia.copy())
print(‘Historia armazenada!’)
print(historias)
except (ValueError, TypeError):
print(“Erro na leitura das histórias!”)
return historias

def mostrarHistorias(historias):
print(‘As historias cadastradas foram: \n’)
for hist in historias:
print(f’{historia[“titulo”]} ')

def apagarHistoria(titulo, historias):
mostrarHistorias(historias)
titulo = str(input(“Qual a historia que voce deseja apagar?”))
for historia in historias:
if (historia[historia] == titulo):
historias = historias.pop(titulo, “Historia apagada”)
print(historias)

def trocarHistoria(titulo, historias):
mostrarHistorias(historias)

def mostrarTemas(temas):
print('Temas cadastrados: ')
for t in temas:
print(tema)

#=-=-=-=-=-=-=-==-=-=-=-= Menu Principal -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

def leiaInt(msg): #Exercicio 113
while True:
try:
n = int(input(msg))
except (ValueError, TypeError):
print(’\033[31mERRO: por favor, digite um número inteiro válido.\033[m’)
continue
except (KeyboardInterrupt):
print(’\n\033[31mUsuario preferiu nao digitar esse número.\033[m’)
return 0
else:
return n

def linha(tam = 42):
return ‘-’ * tam

def cabecalho(txt):
print(linha())
print(txt)
print(linha())

def menu(lista):
cabecalho(‘MENU PRINCIPAL’)
for c, iten in enumerate(lista):
print(f’\033[33m{c+1}\033[m - \033[34m{iten}\033[m’)

print(linha())
opc = leiaInt('\033[32mSua Opcao: \033[m')
return opc

#####################################################################################
titulos = list()
temas = list()
cadastro = dict()
historia = dict()
historias = list()
resposta = 1
listaMenu = [‘Cadastrar tema’, ‘Cadastrar historia’, ‘Mostrar historia’,
‘Apagar historia’, ‘Mostrar temas’, ‘Sair do Sistema’]

while (resposta != 6):
resposta = menu(listaMenu)
if (resposta == 1):
mostrarTemas(temas)
cadTemas()

elif (resposta == 2):
     mostrarTemas(temas) 
     sair = 0
     while (sair != 3):
         tema = str(input('Entre com o tema: ')).capitalize()             
         if (tema in temas):
              sair = 3
         print("Tema inexistente, por favor tente outra vez!")
         sair += 1
     if (sair < 3):    
         titulo = str(input('Entre com o ti­tulo da historia: '))         
         cadHistorias(tema, titulo, historias)
     
elif (resposta == 3):        
     mostrarHistorias(historias)
    
elif (resposta == 4):         
    apagarHistoria(titulo, historias)
    
elif (resposta == 5):        
    mostrarTemas(temas)        

elif resposta == (len(listaMenu)):
    cabecalho('Saindo do sistema... Até logo!')
    break
else:
    print('\033[31mERRO! Digite uma opção válida!\033[m')
    sleep(5)