【问题标题】:Python sorting a list of lists ascending with 0 at the last placePython对最后一个位置以0升序的列表进行排序
【发布时间】:2017-09-09 10:43:15
【问题描述】:

拥有,在 Python 2.x 中

x = [
  [0,0,0],
  [1,2,3],
  [150,400,200],
  [0,0,0],
  [225,100,150]
]

我该怎么做才能让 x 变成

[
  [1,2,3],
  [225,100,150],
  [150,400,200],
  [0,0,0],
  [0,0,0],
]

x[i][2]升序排列,最后为0?

【问题讨论】:

  • @languitar 没有帮助,我需要一个通用解决方案,因为该列表列表可能有 3 个完全归零的元素,可能有 1 个,可能没有..
  • 在这些情况下有什么问题?只需使用 lambda 表达式,选择每个子列表的最后一个条目作为排序键...

标签: python list sorting python-2.x


【解决方案1】:

可能是这样的:

sorted(t, key=lambda x: x[2] if x[2] > 0 else float('inf'))

【讨论】:

  • 就是这样,我遇到了 float('inf') 但我没有设法达到这个解决方案。谢谢!
【解决方案2】:
x.sort(key=lambda y: (y[2] == 0, y[2]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2018-11-19
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多