如何在排序lambd中寻址zip列表

2024-09-22 20:37:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类,它有两个属性,它们本身就是列表:

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)

Tags: lambda元素列表data属性排序elementszip
1条回答
网友
1楼 · 发布于 2024-09-22 20:37:05

cmp应该是对比较两个值的函数的引用。相反,您需要更简单的东西—一个key字段。你知道吗

最简单的方法是直接从zipped引用值,而不是返回到list2中的原始值。注意,顺便说一句,python中的列表是基于零的,因此第二个元素应该是[1],而不是[2]。长话短说:

zipped.sort(key = lambda k : k[1][1])

相关问题 更多 >