Найти - Пользователи
Полная версия: список структур
Начало » Python для новичков » список структур
1
mrgloom
написал такой код
def get_best_n(img_path, db_dir,n=10,types = ('*.jpg','*.tif','*.png')):
	os.chdir(db_dir)
	
	files_grabbed = []
	for files in types:
		files_grabbed.extend(glob.glob(files))
	
	hist_list=[]
	for names in files_grabbed:
		full_path= db_dir+'\\'+names
		src = cv.LoadImage(full_path, cv.CV_LOAD_IMAGE_COLOR)
		hist_list.append(compute_histogram_rgb(src))
	
	score_list=[]
	img= cv.LoadImage(img_path, cv.CV_LOAD_IMAGE_COLOR)
	hist= compute_histogram_rgb(img)
	for h in hist_list:
		score_list.append(cv.CompareHist(hist, h, cv.CV_COMP_CORREL))
	score_list.sort()
	return score_list

мне необходимо как то вместе соединить имена изображений из files_grabbed и score_list, т.е. получиться список структур(?), а потом отсортировать по score_list и взять первые n и вывести их имена.
s0rg
Достаточно использовать кортежи (tuple) то есть на выходе будет список:
[(score1, file1), (score2, file2), ..., (scoreN, fileN)]
его пропускаем через sort и откусываем n элементов.
mrgloom
вроде бы dict как раз то что нужно, но непонятно как его сортировать
http://docs.python.org/2/library/stdtypes.html#dict

а как работать с tuple я так и не понял.

т.е. мне тупо нужно что то типа вектора со структурой на 2 ячейки и чтобы можно было добавлять\удалять\получать доступ по индексу\сортировать по одной из ячеек.

ну на самом деле хватит добавлять\сортировать по одной из ячеек, остальное только для удобства.
s0rg
mrgloom
вроде бы dict как раз то что нужно, но непонятно как его сортироватьhttp://docs.python.org/2/library/stdtypes.html#dictа как работать с tuple я так и не понял.т.е. мне тупо нужно что то типа вектора со структурой на 2 ячейки и чтобы можно было добавлять\удалять\получать доступ по индексу\сортировать по одной из ячеек.ну на самом деле хватит добавлять\сортировать по одной из ячеек, остальное только для удобства.
Именно это я вам и предложил, поясняю примером:
from operator import itemgetter
list1 = ['a', 'b', 'c']
list2 = [3, 2, 1]
list3 = zip(list2, list1)
print list3
print sorted(list3, key=itemgetter(0))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB