#Exercice:

#1- Ecrire une function rempli_list qui retourn une lise de taille n>=4 (n est un param )
# avec le mots doivent commencer par une lettre
def rempli_list(n=4):
    list_mot=[]
    for i in range(n):
        print('-------',len(list_mot)+1,'-------')
        while True:
            mot=input('donner un mot commencant par une lettre')
            if mot[0].isalpha():break
        list_mot.append(mot)
    return list_mot

#2- Ecrire une function dict_first qui accepte liste de mots et retourne un dictionnaire
# dont:
#    d={<premier letter>:list_mots_commencant_par_cette_lettre}
# Exemple:
# L=['ali','sana','mohammed','safa','mourad','samira']
# dict_first(L) retourne {'a':['ali'],'m':['mohammed','mourad'],'s':['sana','safa','samira']}

def dict_first(L):
    cles={e[0] for e in L}
    d={}
    for c in cles:
        d[c]=[]
        for ele in L:
            if c==ele[0]:d[c].append(ele)
    return d
#3- Ecrire une function dict_first qui accepte liste de mots et retourne un dictionnaire
# dont:
#    d={<longueur n>:list_mots_de_longueur_n}
# Exemple:
# Pour la meme L,
# dict_sec(L) retourne {3:['ali'],4:['sana','safa'],6:['mourad','samira'],8['mohammed']}

def dict_sec(L):
    cles={len(e) for e in L}
    d={}
    for c in cles:
        d[c]=[]
        for ele in L:
            if c==len(ele):d[c].append(ele)
    return d

#4- Ecrire une function d3 qui accepte liste de mots et retourne un dictionnaire
# dont:
#    d={<chaque_caractere_de_la_liste>:frequence_de_ce_caractere_dans_la_liste }
# Exemple:
# Pour la meme L,
# d3(L) retourne {'r': 2, 'h': 1, 'l': 1, 'i': 2, 'e': 1, 'n': 1, 'm': 5, 'd': 2, 'f': 1, 'u': 1, 'o': 2, 'a': 9, 's': 3}

def d3(l):
    ch=''.join(l)
    set_cle=set(ch)
    return {c:ch.count(c) for c in set_cle}




