<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_or_create(full_filename, headers_types=None, default_entry=''):
 """Load a .csv file into a CSVModel if the file exists, or create a new CSVModel with the given filename if the file does not exist. Parameters full_filename : :obj:`str` The file path to a .csv file. headers_types : :obj:`list` of :obj:`tuple` of :obj:`str`, :obj:`str` A list of tuples, where the first element in each tuple is the string header for a column and the second element is that column's data type as a string. default_entry : :obj:`str` The default entry for cells in the CSV. Returns ------- :obj:`CSVModel` The CSVModel initialized with the data in the given file, or a new CSVModel tied to the filename if the file doesn't currently exist. """

        # convert dictionaries to list
        if isinstance(headers_types, dict):
            headers_types_list = [(k,v) for k,v in headers_types.items()]
            headers_types = headers_types_list

        if os.path.isfile(full_filename):
            return CSVModel.load(full_filename)
        else:
            return CSVModel(full_filename, headers_types, default_entry=default_entry)