Eu honestamente li errado o enunciado desse caso e entendi que a entrada deveria ser um input, então eu acabei fazendo esse código um pouquinho mais complexo:
import re
participants = {}
name_template = r'[^\W\d_]+'
age_template = r'[0-9]+'
while True:
    names = input("Digite o nome do participante: ").title().strip().split(", ")
    ages = input("Digite a idade do participante: ").strip().split(", ")
    print("")
    
    if len(names) != len(ages):
        print("O número de membros das duas listas é diferente. Tente novamente.")
        break
    
    for i in range(len(names)):
        name = names[i]
        age = ages[i]             
        if (re.fullmatch(name_template, name)) and (re.fullmatch(age_template, age)):
            participants[name] = age 
        else:
            print("Existe algum erro na formatação dos dados. Encerrando o processo.\n")
            break
    break
if participants:
    print("Lista de participantes e suas idades: ")
    for x, y in participants.items(): 
        print(f"- {x}: {y} anos de idade;")
else:
    print("Houve um erro no processamento de dados. Tente novamente.")
Esse código tem uns três problemas. Um é que eu não achei uma solução boa pra quando o número de listas é maior que a outra, então eu decidi só não fazer esse processo. O segundo é que se tiver um caso em que o dado errado esteja no meio da lista, ele só interrompe tudo ao invés de pegar dados válidos, como em:
Digite o nome do participante: david, júlia, arcelino, joão, carlos, pedro, alessandro
Digite a idade do participante: 20, 22, 56, 19, 20, X, 42 
Existe algum erro na formatação dos dados. Encerrando o processo.
Lista de participantes e suas idades:
- David: 20 anos de idade;
- Júlia: 22 anos de idade;
- Arcelino: 56 anos de idade;
- João: 19 anos de idade;
- Carlos: 20 anos de idade;
Como é que seria uma boa resolução desse tipo de problema? Sei que não é exatamente o que foi pedido mas fiquei curioso pra saber.
 
            