def linia_noms_cols_a_dic_1(capcalera, linia, separador, columnes):
    l_linia = linia.split(separador)
    assert len(capcalera) == len(l_linia)
    d_linia = {}
    for i in range(len(capcalera)):
        if capcalera[i] in columnes:
            d_linia[capcalera[i]] = l_linia[i]
    return d_linia

def linia_noms_cols_a_dic_2(capcalera, linia, separador, columnes):
    l_linia = linia.split(separador)
    assert len(capcalera) == len(l_linia)
    d_linia = {capcalera[i]: l_linia[i] for i in range(len(capcalera)) if capcalera[i] in columnes}
    return d_linia

# Tria la solució que vols provar
linia_noms_cols_a_dic = linia_noms_cols_a_dic_1
# linia_noms_cols_a_dic = linia_noms_cols_a_dic_2


def linia_bools_a_dic_1(capcalera, linia, separador, bools):
    l_linia = linia.split(separador)
    assert len(capcalera) == len(l_linia)
    assert len(capcalera) == len(bools)
    d_linia = {}
    for i in range(len(capcalera)):
         if bools[i]:
             d_linia[capcalera[i]] = l_linia[i]
    return d_linia

def linia_bools_a_dic_2(capcalera, linia, separador, bools):
    l_linia = linia.split(separador)
    assert len(capcalera) == len(l_linia)
    assert len(capcalera) == len(bools)
    d_linia = {capcalera[i]: l_linia[i] for i in range(len(capcalera)) if bools[i]}
    return d_linia

# Tria la solució que vols provar
linia_bools_a_dic = linia_bools_a_dic_1
# linia_bools_a_dic = linia_bools_a_dic_2
