【问题标题】:How do I use `sorted` to sort a list of tuples? [duplicate]如何使用 `sorted` 对元组列表进行排序? [复制]
【发布时间】:2019-01-01 00:16:16
【问题描述】:

这是我的元组列表

[('Raven', '18'), ('Lion', '6'), ('Unassigned', '0'), ('Cobra', '6')]

我想按照元组中数字的值对它们进行排序,实现这个顺序。

[('Raven', '18'), ('Lion', '6'), ('Cobra', '6'), ('Unassigned', '0')]

这样做最好,我应该使用sorted()吗?

【问题讨论】:

    标签: python sorting


    【解决方案1】:

    sorted 采用key 参数,您可以在其中指定需要进行排序的依据:

    lst = [('Raven', '18'), ('Lion', '6'), ('Unassigned', '0'), ('Cobra', '6')]
    
    print(sorted(lst, key=lambda x: -int(x[1])))
    # or print(sorted(lst, key=lambda x: int(x[1]), reverse=True))
    
    # Outputs: [('Raven', '18'), ('Lion', '6'), ('Cobra', '6'), ('Unassigned', '0')]
    

    【讨论】:

      【解决方案2】:

      您可以使用sorted,与以下key

      sorted(t, key = lambda x: int(x[1]), reverse=True)
      [('Raven', '18'), ('Lion', '6'), ('Cobra', '6'), ('Unassigned', '0')]
      

      key 在这里所做的是在排序之前将定义的lambda 函数应用于列表中的每个元素。考虑使用列表推导的以下等效项:

      t = [int(x[1]) for x in t] 
      # [18, 6, 0, 6]
      

      然后它使用key 对元组列表进行排序:

      sorted(t, reverse=True)
      [18, 6, 6, 0]
      

      【讨论】:

      • 你确定 Lion 和 Cobra 的出现顺序正确吗?
      • 据我了解,这只是用于排序的数字,没有提及考虑其他任何因素
      猜你喜欢
      • 1970-01-01
      • 2016-03-19
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      相关资源
      最近更新 更多