如何按两个值对这个元组列表进行排序?

时间:2018-04-10 11:42:39

标签: python list sorting tuples

我有一个元组列表:y2 = SSasympOrig(x2, Asym=10, lrc=0.1) # Asym*(1 - exp(-exp(lrc)*input)) plot(y2 ~ x2, type="l") points(x = log(2) / exp(0.1), y = 0.5 * 10)

我想以两种方式对此列表进行排序:

首先按升值增加第一个值,即[(2, Operation.SUBSTITUTED), (1, Operation.DELETED), (2, Operation.INSERTED)] 其次是反向字母顺序的第二个值,即1, 2, 3... etc

所以上面的列表应该排序为:

Operation.SUBSTITITUTED, Operation.INSERTED, Operation, DELETED

如何排序此列表?

4 个答案:

答案 0 :(得分:4)

由于排序为guaranteed to be stable,您可以分两步完成:

f56fhj => no whitespace
o9f g66ff o => whitespace

答案 1 :(得分:2)

在这种特殊情况下,因为比较的顺序可以很容易地反转为整数,你可以使用负值对整数键进行一次排序&反向:

lst = [(2, 'Operation.SUBSTITUTED'), (1, 'Operation.DELETED'), (2, 'Operation.INSERTED')]
res = sorted(lst, key=lambda x: (-x[0],x[1]), reverse=True)

结果:

[(1, 'Operation.DELETED'), (2, 'Operation.SUBSTITUTED'), (2, 'Operation.INSERTED')]

取消整数键取消“反向”方面,仅保留第二个字符串标准。

答案 2 :(得分:0)

使用itemgetter模块中的operator的另一种方式:

WinWaitActive("File Upload") // enter the title of the pop up

Send("Path of the file to enter")   // enter the path of the file to upload

Send("{ENTER}") / press enter

答案 3 :(得分:0)

您可以使用:

from operator import itemgetter
d = [(1, 'DELETED'), (2, 'INSERTED'), (2, 'SUBSTITUTED')]
d.sort(key=itemgetter(1),reverse=True)
d.sort(key=itemgetter(0))
print(d)