def dual_id_dict(dict_values, G, node_attribute):
    """
    It can be used when one deals with a dual graph and wants to link analyses conducted on this representation to 
    the primal graph. For instance, it takes the dictionary containing the betweennes-centrality values of the
    nodes in the dual graph, and associates these variables to the corresponding edgeID.
    
    Parameters
    ----------
    dict_values: dictionary 
        it should be in the form {nodeID: value} where values is a measure that has been computed on the graph, for example
    G: networkx graph
        the graph that was used to compute or to assign values to nodes or edges
    node_attribute: string
        the attribute of the node to link to the edges GeoDataFrame
    
    Returns
    -------
    ed_dict: dictionary
        a dictionary where each item consists of a edgeID (key) and centrality values (for example) or other attributes (values)
    """
    
    view = dict_values.items()
    ed_list = list(view)
    ed_dict = {}
    for p in ed_list: 
        ed_dict[G.nodes[p[0]][node_attribute]] = p[1] # attribute and measure
        
    return ed_dict