【问题标题】:Is there a way to sort lists of tuples? [duplicate]有没有办法对元组列表进行排序? [复制]
【发布时间】:2020-03-28 12:51:30
【问题描述】:

我想对这个列表进行排序:

[('alpha', 2), ('delta', 3), ('charlie', 3), ('tango', 1), ('foxtrot', 1), ('echo', 2)]

结果应该是

[('charlie', 3), ('delta', 3), ('alpha', 2), ('echo', 2), ('foxtrot', 1), ('tango', 1)]

charlie 排在第一位是因为它有最大的数字,它在 delta 之前是因为 c 按字母顺序排在 d 之前(所以如果数字相同,它会按字母顺序对这些特定的数字进行排序)。 alpha 在 echo 之前,因为即使它们具有相同的数字,a 按字母顺序排在 e 之前。 echo 领先于狐步,因为 echo 的数字更大,而狐步领先于探戈,即使它们的数字相同,因为 f 在 t 之前。

目前我的方法涉及一个 for 循环(查看每个元素)内部的 while 循环(将项目移动到正确的位置),如果数字相同,那么之后的另一个循环会执行相同的操作,所以它可以按字母顺序排序。

有更好的方法吗?

【问题讨论】:

标签: python python-3.x list sorting tuples


【解决方案1】:

您可以编写自己的key 以传递给sorted。在这种情况下,首先按[1] 索引排序,但将其取反,以便得到降序。然后按名称按字母升序排序,即索引[0]

>>> sorted(values, key=lambda i: (-i[1], i[0]))
[('charlie', 3), ('delta', 3), ('alpha', 2), ('echo', 2), ('foxtrot', 1), ('tango', 1)]

【讨论】:

    猜你喜欢
    • 2013-02-22
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    相关资源
    最近更新 更多