【问题标题】:Sorting part of a list of tuples [duplicate]对元组列表的一部分进行排序[重复]
【发布时间】:2019-09-17 15:23:01
【问题描述】:

我有一个这样的列表名称、体重、身高:

list1 = [('jacob', 75, 180)
         ('sam', 90, 190)
         ('sara', 75, 175)
         ('bob', 60, 175)]

首先我想按高度(MAX 到 MIN)对其进行排序,我已经完成了。 然后如果高度相同,只需按重量(MIN到MAX)对高度相同的人进行排序。

我明白了:

list1 = [('sam', 190, 90)
         ('jacob', 180, 75)
         ('sara', 175, 75)
         ('bob', 175, 60)]

但我想要这个:

my_list = [('sam', 190, 90),
           ('jacob', 180, 75),
           ('bob', 175, 60),
           ('sara', 175, 75)]

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    假设您实际上并不介意顺序(由于某种原因您在输出中更改了它),您可以使用 sortedkey,其中使用负号可以强制排序给定要升序的列表元素:

    sorted(list1, key=lambda x: (-x[2], x[1]))
    
    [('mahdi', 90, 190),
     ('amin', 75, 180),
     ('ahmad', 60, 175),
     ('mohamad', 75, 175)]
    

    否则只需使用列表理解重新排列元组:

    [(i,k,j) for i,j,k in sorted(list1, key=lambda x: (-x[2], x[1]))]
    
    [('mahdi', 190, 90),
     ('amin', 180, 75),
     ('ahmad', 175, 60),
     ('mohamad', 175, 75)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 2014-07-18
      • 2020-04-20
      • 2016-06-01
      • 2019-07-01
      • 2019-07-30
      相关资源
      最近更新 更多