【问题标题】:sorting a list on based on identical values in the list [duplicate]根据列表中的相同值对列表进行排序[重复]
【发布时间】:2018-03-11 02:33:06
【问题描述】:

(使用 Python 3)

我想按值和较小列表中的字符串对列表列表进行排序,然后像这样打印它们:

(这只是我正在尝试做的一个简化示例) a 4 a 3 b 3 c 3 a 2 b 2 c 2 d 2 a 1 b 1 c 1 d 1

在我使用的代码中

my_list = sorted(mylist, key=itemgetter(1), reverse=True)

得到类似的东西

[['a', 4], ['c', 3], ['b', 3], ['a', 3], ['d', 2], ['c', 2], ['b', 2], ['a', 2], ['d', 1], ['c', 1], ['b', 1], ['a', 1]]

如您所见,我的价值观正在下降,就像我想要的那样。但是,较小列表中具有相同值的字符串按反字母顺序排列。

有什么建议吗?

【问题讨论】:

    标签: python python-3.x list sorting


    【解决方案1】:

    Python 使用稳定的排序方式,因此对于关系,项目将按照它们出现的顺序显示。您可以对多个键进行排序,但这会反转两者的排序:

    my_list = sorted(mylist, key=itemgetter(1, 0), reverse=True)
    

    或排序两次,因为您只想反转其中一种排序:

    my_list = sorted(sorted(my_list, key=itemgetter(0)), key=itemgetter(1), reverse=True)
    

    【讨论】:

    • 哦,我没看到你不想颠倒字母,你可以为此进行双重排序
    猜你喜欢
    • 2020-06-02
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多