【发布时间】:2017-04-30 04:06:19
【问题描述】:
我正在尝试对列表列表进行排序,但内部列表的长度不同。例如:
version_list = [[1, 1, 2], [1, 0], [1, 3, 3], [1, 0, 12], [1, 0, 2], [2, 0, 0], [1, 1, 1]]
在没有第三个值的情况下,可以假设为0。我尝试过使用:
revision = sorted(version_list, key=lambda x: (x[2] if x[2] >= 0 else x[2] = 0))
因为我知道
revision = sorted(version_list, key=lambda x: x[1])
revision = sorted(version_list, key=lambda x: x[0])
两者都可以。
期望的结果是:
[[1, 0], [1, 0, 2], [1, 0, 12], [1, 1, 1], [1, 1, 2], [1, 3, 3], [2, 0, 0]]
任何帮助或建议将不胜感激。
【问题讨论】:
-
你能显示预期的输出吗?
-
你的意思是
sorted(yourlist, reverse=True)?我认为您不需要实现匿名函数,Python 本身就支持您尝试做的事情。 -
我正在寻找的输出是 [[1, 0], [1, 0, 2], [1, 0, 12], [1, 1, 1], [1 , 1, 2], [1, 3, 3], [2, 0, 0]]。 sorted(list, reverse=True) 没有给出这个结果。
-
哦,那么
sorted(yourlist)应该可以工作。 -
@DoganAskan 只要不涉及负值。后备值为 0,因此负值应该出现在之前(而不是在
sorted中没有key的情况下)。
标签: python python-2.7 list sorting lambda