Dentro do meu algoritmo, fiz um método substituir_valor() para alterar os valores das chaves (cidade, profissão, etc).
Apesar de não ter conseguido, depois de uma sugestão do Chat GPT consegui fazer funcionar. Mas eu não consigo entender o que estava errado da maneira que fiz a primeira já que eu acredito apenas ter separado as condições pessoa['nome'] == nome e chave in pessoa ou chave not in pessoa.
Alguém consegue me explicar?
Meu algoritmo
def substituir_valor():
    nome = input('Qual o nome da pessoa que você quer trocar o valor?')
    chave = input('Qual tipo de chave deseja mudar?')
    
        
    for pessoa in lista_de_pessoas:
            
        while True:               
            if pessoa['nome'] == nome and chave in pessoa:
                valor = input('Qual o valor que você deseja mudar? ')
                pessoa[chave] = valor
                break
            
            elif pessoa['nome'] == nome and chave not in pessoa:
                
                pergunta = input(f'{nome} não possui essa chave. Deseja criar?' ).lower()
                
                if pergunta == 'sim':
                        pessoa[chave] = ''
                        break
                elif pergunta == 'não':
                        break
                else:
                        print('Responder "sim" ou "não" ')
                        return
    
            else:
                print('Nome ou chave inexistente(s)')
                return
substituir_valor()
código sugerido pelo Chat GPT
def substituir_valor():
    nome = input('Qual o nome da pessoa que você quer trocar o valor? ')
    chave = input('Qual tipo de chave deseja mudar? ')
    
    for pessoa in lista_de_pessoas:
        if pessoa['nome'] == nome and chave in pessoa:
                valor = input(f'Qual o novo valor para {chave}? ')
                pessoa[chave] = valor
                print('Valor alterado com sucesso!')
                return
        elif pessoa['nome'] == nome and chave in pessoa:
                pergunta = input(f'{nome} não possui a chave {chave}. Deseja criar? ').lower()
                if pergunta == 'sim':
                    novo_valor = input('Digite o valor para essa chave: ')
                    pessoa[chave] = novo_valor
                    print('Chave criada com sucesso!')
                    return
                elif pergunta == 'não':
                    print('Operação cancelada.')
                    return
                else:
                    print('Por favor, responda "sim" ou "não".')
                    return
    else:
        print('Pessoa não encontrada na lista.')
 
            