我有一个包含2个属性的类,这些属性是列表本身:
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)
答案 0 :(得分:2)
cmp
应该是对比较两个值的函数的引用。相反,你需要更简单的东西 - key
字段。
最简单的方法是直接从zipped
引用该值,而不是回到list2
中的原始值。注意,BTW,python中的列表是从零开始的,因此第二个元素是[1]
,而不是[2]
。长话短说:
zipped.sort(key = lambda k : k[1][1])