# crea_agenda

# solució 1: partim del diccionari buit, afegim parelles (clau, valor)

def crea_agenda_1(ldades):
    agenda = {}
    for dada in ldades:
        nom, telf = dada
        agenda[nom] = telf
    return agenda

# solució 2: convertim la llista de parelles (clau, valor) a diccionari

def crea_agenda_2(ldades):
    return dict(ldades)

# Tria la solució que vulguis provar
#crea_agenda = crea_agenda_1
crea_agenda = crea_agenda_2


# compta_prefixos

# solució 1: comparem el prefix amb una llesca
        
def compta_prefixos_1(agenda, prefix):
    n = 0
    longp = len(prefix)
    for nom in agenda:
        if agenda[nom][:longp] == prefix:
            n = n + 1
    return n

# solució 2: usem el mètode str.startswith per saber si és un prefix
        
def compta_prefixos_2(agenda, prefix):
    n = 0
    for nom in agenda:
        if agenda[nom].startswith(prefix):
            n = n + 1
    return n

# solució 3: usem la vista dict.values
        
def compta_prefixos_3(agenda, prefix):
    n = 0
    for tel in agenda.values():
        if tel.startswith(prefix):
            n = n + 1
    return n

# Tria la solució que vulguis provar
#compta_prefixos = compta_prefixos_1
#compta_prefixos = compta_prefixos_2
compta_prefixos = compta_prefixos_3


# conte_prefix

def conte_prefix(agenda, prefix):
    for tel in agenda.values():
        if tel.startswith(prefix):
            return True
    return False


# noms_prefix

# solució 1: partim de la llista buida, hi afegim els noms dels
# telèfons amb prefix

def noms_prefix_1(agenda, prefix):
    lnoms = []
    for nom in agenda:
        if agenda[nom].startswith(prefix):
            lnoms.append(nom)
    lnoms.sort()
    return lnoms

# solució 2: calculem un llista per comprensió

def noms_prefix_2(agenda, prefix):
    lnoms = [nom for nom in agenda if agenda[nom].startswith(prefix)]
    lnoms.sort()
    return lnoms

# Tria la solució que vulguis provar
#noms_prefix = noms_prefix_1
noms_prefix = noms_prefix_2


# crea_agenda_reps

def crea_agenda_reps(ldades):
    agenda = {}
    for nom, telf in ldades:
        if nom in agenda:
            agenda[nom].append(telf)
        else:
            agenda[nom] = [telf]
    return agenda
