(使用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]]
正如你所看到的,我的价值观正在下降,就像我想要的那样。但是,较小列表中具有相同值的字符串按反字母顺序排列。
有什么建议吗?
答案 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)