# dic_osc

## solució 1: esquema aplica sobre un tuple i funció auxiliar

def dic_osc_1(d):
    d2 = {}
    for k in ('Barcelona', 'Girona', 'Lleida', 'Tarragona'):
        d2[k] = valor(k, d)
    return d2

def valor(k, d):
    if k in d:
        v = d[k]
        r = round(v[1] - v[0], 1)
    else:
        r = 0.0
    return r

## solució 2: diccionari per comprensió i funció auxiliar

def dic_osc_2(d):
    d2 = {k: valor(k, d) for k in ('Barcelona', 'Girona', 'Lleida', 'Tarragona')}
    return d2

## solució 3: diccionari per comprensió i dict.update()

def dic_osc_3(d):
    d2 = {k: 0.0 for k in ('Barcelona', 'Girona', 'Lleida', 'Tarragona')}
    d2.update({k: round(v[1] - v[0], 1) for k, v in d.items()})
    return d2

## tria la solució que vols provar
#dic_osc = dic_osc_1
#dic_osc = dic_osc_2
dic_osc = dic_osc_3


# oscillacio

def oscillacio(fitxer, mes):
    d = {}
    with open(fitxer, 'r') as f:
        f.readline()
        for l in f:
            ciutat, ms, tmp = l.strip().split(',')
            if int(ms) == mes:
                if ciutat not in d:
                    d[ciutat] = [float(tmp),float(tmp)]
                else:
                    t = float(tmp)
                    if t < d[ciutat][0]:
                        d[ciutat][0] = t
                    if t > d[ciutat][1]:
                        d[ciutat][1] = t
    d2 = dic_osc(d)
    return d2

