<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _ohlc_dict(df_or_figure,open='',high='',low='',close='',volume='', 			 validate='',**kwargs):
 	""" 	Returns a dictionary with the actual column names that 	correspond to each of the OHLCV values. 	df_or_figure : DataFrame or Figure 	open : string 		Column name to be used for OPEN values 	high : string 		Column name to be used for HIGH values 	low : string 		Column name to be used for LOW values 	close : string 		Column name to be used for CLOSE values 	volume : string 		Column name to be used for VOLUME values 	validate : string 		Validates that the stated column exists 		Example: 			validate='ohv' | Will ensure Open, High 							 and close values exist. 	"""

	c_dir={}
	ohlcv=['open','high','low','close','volume']
	if type(df_or_figure)==pd.DataFrame:
		cnames=df_or_figure.columns
	elif type(df_or_figure)==Figure or type(df_or_figure) == dict:
		cnames=df_or_figure.axis['ref'].keys()
	elif type(df_or_figure)==pd.Series:
		cnames=[df_or_figure.name]
	c_min=dict([(v.lower(),v) for v in cnames])
	for _ in ohlcv:
		if _ in c_min.keys():
			c_dir[_]=c_min[_]
		else:
			for c in cnames:
				if _ in c.lower():
					c_dir[_]=c

	if open:
		c_dir['open']=open
	if high:
		c_dir['high']=high
	if low:
		c_dir['low']=low
	if close:
		c_dir['close']=close
	if volume:
		c_dir['volume']=volume
		
	for v in list(c_dir.values()):
		if v not in cnames:
			raise StudyError('{0} is not a valid column name'.format(v))

	if validate:
			errs=[]
			val=validate.lower()
			s_names=dict([(_[0],_) for _ in ohlcv])
			cols=[_[0] for _ in c_dir.keys()]
			for _ in val:
				if _ not in cols:
					errs.append(s_names[_])
			if errs:
				raise StudyError('Missing Columns: {0}'.format(', '.join(errs)))

	return c_dir