Python 基于另一个列表排序对对象列表进行排序

Python 基于另一个列表排序对对象列表进行排序,python,list,sorting,object,Python,List,Sorting,Object,我一直在寻找一种基于另一个int列表的排序顺序对对象进行排序的方法,但我没有找到 我试过了 newList = [element for _,element in sorted(zip(listOfInt, listOfObjects))] 但它会显示以下错误: "'<' not supported between instances of 'Object' and 'Object'" “”你可以这样写: newList = [ elem[1] fo

我一直在寻找一种基于另一个int列表的排序顺序对对象进行排序的方法,但我没有找到

我试过了

newList = [element for _,element in sorted(zip(listOfInt, listOfObjects))]
但它会显示以下错误:

"'<' not supported between instances of 'Object' and 'Object'"

“”你可以这样写:

newList = [
    elem[1]
    for elem in sorted(zip(listOfInt, listOfObjects), key=lambda tup: tup[0])
]
zip
应用于
List[int]
List[Object]
将返回
Tuple[int,Object]
排序的
键的序列允许您相对于列表中的元素定义排序键(在本例中,使用整数)。
list
sort
方法支持相同的参数()。外部理解获取您关心的元组元素(对象
)后期排序。如果您希望沿着整数列表对[Object]
列表进行排序,那么这应该可以工作

出现此错误的原因:

'<' not supported between instances of 'Object' and 'Object'

”通常,如果
listOfInts
不包含重复项,您的方法就可以了。列表和元组是按字典顺序进行比较的,因此当存在重复项时,会比较每个元组中的第二个元素。为防止发生这种情况,您可以在不可比较对象之前在键中插入一个元素:

newList = [element for _, (_, element) in sorted(zip(listOfInt, enumerate(listOfObjects)))]

请发布格式正确的McVet。这种情况可能发生,因为intsMaybe np中有重复项。argsort将非常有用。您会遇到此错误,因为它试图对没有键的对象进行排序