【问题标题】:Python: Sorting and printing lists within lists [closed]Python:在列表中排序和打印列表[关闭]
【发布时间】:2026-02-18 08:00:02
【问题描述】:

给定一个列表:

lists = [[5, 8, 2, "Banana"][3, 6, 9, "Apple"][7, 9, 1, "Cherry"]]

1) 如何打印按字母顺序排列的列表并仅使用列表中的第二个数字?

期望的输出:

[6, "Apple"][8, "Banana"][9, "Cherry"]

2) 按从高到低的第三个数字打印排序列表

期望的输出:

[3, 6, 9, "Apple"] [5, 8, 2, "Banana"][7, 9, 1, "Cherry"]

【问题讨论】:

  • SO 不是免费的代码编写服务。所有在这里提出问题的人都必须展示一些研究工作和/或自己解决问题的尝试。之后,我们将非常乐意帮助您解决任何具体问题。
  • 修复您的列表! TypeError: list indices must be integers, not tuple

标签: python list sorting


【解决方案1】:

因为你只想要代码,所以听起来像

from operator import itemgetter
sorted(map(itemgetter(1,-1),lists),key=itemgetter(-1))

这里有一些代码可以做你想做的事……老师可能需要解释……只是公平的警告

【讨论】:

    【解决方案2】:
    >>> sorted([[i[1], i[-1]] for i in lists], key=lambda x:x[1])
    [[6, 'Apple'], [8, 'Banana'], [9, 'Cherry']]
    

    【讨论】:

      【解决方案3】:

      这里是:每个子列表都应该有逗号

       l = [[5, 8, 2, "Banana"],[3, 6, 9, "Apple"],[7, 9, 1, "Cherry"]]   
      [ x[1::2]for x in sorted(l,key=lambda x : x[2]) ]
      

      输出:

      [[9, 'Cherry'], [8, 'Banana'], [6, 'Apple']]
      

      然后使用key=reverse排序

      喜欢这个:

      sorted([ x[1::2] for x in sorted(l,key=lambda x : x[2]) ],key=lambda x:x[-1])
      

      输出:

      [[6, 'Apple'], [8, 'Banana'], [9, 'Cherry']]
      

      【讨论】:

      • @jaron 是的,老师需要解释
      • 另外,这是错误的,检查第一个帖子;)
      • 我很抱歉让我纠正它,啊没看到它
      • @plg 不是通知我,我打印了错误的索引,现在检查