【问题标题】:Sort elements in list based on length first and alphabetical order second根据长度第一和字母顺序第二对列表中的元素进行排序
【发布时间】:2022-01-06 12:32:44
【问题描述】:

我有一个字符串列表。现在,我想根据字符串长度对该列表中的元素进行排序。

proxy_list = ['my', 'list', 'looks', 'like', 'this']

我想要的输出如下所示:

desired_output = ['my','like','list','this','looks']

下面的代码根据长度而不是字母顺序对列表进行排序:

print(sorted(proxy_list, key=len))
>>> ['my', 'list', 'like', 'this', 'looks'] 

如何根据两件事对带有字符串的列表进行排序?

【问题讨论】:

  • key=lambda s: (len(s), s)。首先按长度排序,然后按字符串排序。默认情况下,字符串按字母顺序排序。
  • 这能回答你的问题吗? Sort a list by multiple attributes?
  • 由于 python sort 是稳定的,您也可以运行 sorted(sorted(proxy_list), key=len),尽管这可能会更慢,除非列表已经或多或少地按照您的需要排序。

标签: python list sorting


【解决方案1】:

使用 key 排序函数的参数。将每个元素转换为优先级元组。这里 (len(s), s),这意味着 len(s)s 具有更高的优先级。

proxy_list = ['my', 'list', 'looks', 'like', 'this']
print(sorted(proxy_list, key=lambda s: (len(s), s)))
#>>> ['my', 'like', 'list', 'this', 'looks']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多