Я использую Python для сопоставления изображений.Векторы объектов для эталонных изображений хранятся в базе данных MySQL.Для каждого нового изображения я генерирую вектор признаков, нахожу разницу между тестовым изображением и опорными векторами в mysql db и возвращаю совпадения на основе расстояния.Это работает хорошо.Однако я хочу отсортировать результаты по расстоянию и получить только первые 10 результатов, которые имеют наибольшее расстояние.Пока мой код выглядит следующим образом:
for i,a in enumerate(data):
features=[float(x) for x in a[6:]]
d = chi2_distance(features, queryFeatures)
results=a[1],d
#res=sorted(results, key=itemgetter(1))
#results.sort(key=lambda x:x[1])
#results=sorted(results,key=lambda x: x[1])
#results=sorted(results, key=lambda x: x[1], reverse=True)
print(type(results))
Когда я печатаю тип результатов, я получаю следующее:
<type 'tuple'>
<type 'tuple'>
<type 'tuple'>
Когда я печатаю только результаты, я получаю:
(127209905L, 6.459347693123215)
(127281515L, 7.790508647801378)
(127312977L, 6.374409391826666)
Я пробовал различные методы, включая преобразование кортежей в список и затем сортировку по списку, но ни один из них не работал.Я относительно новая пчела, работающая над питоном ... любое руководство о том, как это сделать, было бы очень полезно.
Ожидаемый результат -
(127281515L, 7.790508647801378)
(127209905L, 6.459347693123215)
(127312977L, 6.374409391826666)