【问题标题】:sort with two element in list of tuple in python3 [duplicate]在python3中用元组列表中的两个元素排序[重复]
【发布时间】:2019-10-29 14:02:25
【问题描述】:
[('sara', 75, 180), ('marko', 90, 190), ('jaimi', 75, 175), ('alex', 60, 175)]

我想根据身高和体重对该列表进行排序。每个元组的第二个元素是重量,第三个是高度。

任务:首先按高度排序(从高到矮)。如果某个元素的高度相等,则按重量对该元素进行排序(从瘦到胖)。

输出应该是这样的:

[('marko', 90, 190), ('sara', 75, 180), ('alex', 60, 175), ('jaimi', 75, 175)]

我还在做这个代码:

x=sorted(result,key=lambda x: (x[2],x[1]),reverse=True)

【问题讨论】:

  • 欢迎来到 Stack Overflow!查看tour。提及具体问题会很有帮助,例如在这种情况下,您的代码似乎没有正确排序。

标签: python list sorting tuples


【解决方案1】:

除了指定reverse=True,您可以更改高度的符号以分别按降序和升序排列:

sorted(result, key=lambda x: (-x[2], x[1]))
# [('marko', 90, 190), ('sara', 75, 180), ('alex', 60, 175), ('jaimi', 75, 175)]

【讨论】:

  • 保留reverse 如果可以更改x[1] 的符号:sorted(l, key=lambda x: (x[2], -x[1]), reverse=True)
  • 是的,它是一样的,但代码更少@heemayl
猜你喜欢
  • 2012-03-11
  • 1970-01-01
  • 2018-03-26
  • 2021-12-23
  • 2012-03-13
  • 1970-01-01
  • 2017-02-12
  • 2019-05-01
  • 1970-01-01
相关资源
最近更新 更多