Python 如何在排序lambda中处理zip列表
我有一个具有两个属性的类,它们本身就是列表:Python 如何在排序lambda中处理zip列表,python,sorting,lambda,Python,Sorting,Lambda,我有一个具有两个属性的类,它们本身就是列表: class data...: list1 = [["g1", 2.0], ["x1", 3.0]...] # n elements list2 = [[2, 4, 5],[3, 2, 1]...] # n elements 我需要根据list2的第二个元素的值对两个列表进行压缩排序 zipped = zip(dataobj.list1, dataobj.list2) zipped.sort(cmp = lambda k: datao
class data...:
list1 = [["g1", 2.0], ["x1", 3.0]...] # n elements
list2 = [[2, 4, 5],[3, 2, 1]...] # n elements
我需要根据list2
的第二个元素的值对两个列表进行压缩排序
zipped = zip(dataobj.list1, dataobj.list2)
zipped.sort(cmp = lambda k: dataobj.list2[2])
这似乎不起作用
如何引用dataobj.list2[2]
的第二个元素,因为这不起作用,并给了我以下错误:
TypeError: <lambda>() takes exactly 1 argument (2 given)
TypeError:()正好接受1个参数(给定2个)
cmp
应该是对比较两个值的函数的引用。相反,您需要更简单的东西-一个键
字段
最简单的方法是直接从zip
引用值,而不是返回到list2
中的原始值。请注意,顺便说一句,python中的列表是基于零的,因此第二个元素是[1]
,而不是[2]
。长话短说:
zipped.sort(key = lambda k : k[1][1])
zipped.sort(key=lambda k:k[1][1])
?zipped.sort(key=lambda k:k[1])感谢您的评论。