基于列表中

时间:2018-03-11 02:33:06

标签: python python-3.x list sorting

(使用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]]

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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)