Python,使用比较函数查找最佳对象

Python,使用比较函数查找最佳对象,python,list,comparison,Python,List,Comparison,我有一个函数,它把两个对象作为参数:a和b 该函数使用很长的算法检查这些对象中的哪一个更好 import functools best = max(combos, key=functools.cmp_to_key(hand_compare)) 如果a更好,则返回-1;如果b更好,则返回1;如果他们平手,则返回0 我的问题是: 列表中有21个这样的对象 我需要找出,使用函数上面的函数是不可能的 改变了,唯一的方法就是比较两个物体,这是一个非常复杂的过程 长算法,这21个对象中哪一个是最好的 我花

我有一个函数,它把两个对象作为参数:a和b 该函数使用很长的算法检查这些对象中的哪一个更好

import functools
best = max(combos, key=functools.cmp_to_key(hand_compare))
如果a更好,则返回-1;如果b更好,则返回1;如果他们平手,则返回0

我的问题是:

列表中有21个这样的对象

我需要找出,使用函数上面的函数是不可能的 改变了,唯一的方法就是比较两个物体,这是一个非常复杂的过程 长算法,这21个对象中哪一个是最好的

我花了好几个小时思考如何高效地完成这项工作,而不必做太多次相同的比较,如何编写一个算法,找出哪一个是最好的,如果两个并列,而且它们都是最好的,那么选择哪一个并不重要,尽管我认为并列的情况甚至不可能发生,我想不出什么好主意

函数名为handcomarea,b 这些对象位于名为Combos的列表中,lencombos为21 我需要一个算法,将找出组合列表中的最佳项目


感谢您的阅读,我希望您能提供帮助:

如果您将hand\u与a比较,则返回1,如果b比较好,则返回-1

import functools
best = max(combos, key=functools.cmp_to_key(hand_compare))

如果将hand_compare更改为如果a更好,则返回1;如果b更好,则返回-1,则此操作将有效

import functools
best = max(combos, key=functools.cmp_to_key(hand_compare))

最简单的方法是:创建每个对象的一个对象,比较函数为_cmp_uuuuuuuupython2.x或定义_lt_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。将每个存储在名为list\的列表中。使用minlist查找值最小的一个


如果可行的话,一个可能会有帮助的优化:如果你能想出一种方法将你的对象映射到可能大的整数,这样x的整数最简单的方法是:为每种类型创建一个对象,使用比较函数作为u cmp_uuuuuuuuupython2.x或定义u lt_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu和uuuuuuuuuuuuuuuuuuuuuuuu。将每个存储在名为list\的列表中。使用minlist查找值最小的一个


如果可行的话,一个可能会有帮助的优化:如果你能想出一种方法将你的对象映射到可能大的整数,这样x的整数使用您的函数实现排序方法\uuu gt\uuuuuuuuuuuuuuuuuu lt\uuuuuuuuuuuuuuuuu eq\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?你了解我的问题吗?排序的相关性如何?如果使用比较对项目进行排序,最后一个项目将是最好的。Hmmm没有想到这一点,python语法会是什么呢?在比较算法中,如果a