def mitjanes_districte(d_lect,d_est,t):
    d = {}
    for estacio,lectures in d_lect.items():
        districte, tipus = d_est[estacio]
        if tipus == t:
            suma = sum(lectures)
            mitjana = suma/len(lectures)
            mitjana_trunc = (suma - max(lectures) - min(lectures))/(len(lectures) - 2)
            tupla = (mitjana, mitjana_trunc)
            if districte not in d:
                d[districte] = [tupla]
            else:
                d[districte].append(tupla)
    for districte in d:
        d[districte].sort()
    return d

def mes_variacio(d_lect, d_est, t, min_est):
    d = mitjanes_districte(d_lect,d_est,t)
    max_var = 0
    for dist, llista in d.items():
        if len(llista) >= min_est:
            mitj_maxima = llista[-1][0]
            mitj_minima = llista[0][0]
            variacio = mitj_maxima - mitj_minima
            if variacio > max_var:
                max_var = variacio
                max_dist = dist
    return max_dist, round(max_var,1)

"""
Versió amb comprensions de llistes

def mes_variacio(d_lect, d_est, t, min_est):
    d = mitjanes_districte(d_lect, d_est, t)

# crea una llista de tuples amb les variacions de cada districte
# amb el mínim d'estacions requerit
    variacions = [
        (llista[-1][0] - llista[0][0], dist)
        for dist, llista in d.items()
        if len(llista) >= min_est
    ]
# busca la variació màxima
    max_var, max_dist = max(variacions)

    return max_dist, round(max_var, 1)

"""
