def assign_labels_colors(labels, colors):
    """
    Takes a list of labels and colors and assigns a unique label to each color. Returns a color_list of length(labels).
    The colors will loop around if the number of unique labels are more than the number of unique colors
    :param labels:
    :param colors:
    :return: color_list
    """
    col_idx = 0
    label2col = {}
    col_list = []
    for i in range(len(labels)):
        if labels[i] in label2col:
            col_list.append(label2col[labels[i]])
        else:
            col = colors[col_idx % len(colors)]
            col_idx += 1
            label2col[labels[i]] = col
            col_list.append(col)
    return col_list