【发布时间】:2013-09-12 23:37:56
【问题描述】:
我正在尝试对某些东西进行双重排序,但它似乎忘记了第一个排序,我认为 python 使用的是稳定排序,所以我可能犯了一个错误。
原始文本是一个如下所示的数组:
benzene - 30.0 - 15
xylene - 5.0 - 10
benzene - 8.5 - 29
benzene - 0.5 - 11
我想要:
benzene - 0.5 - 11
benzene - 8.5 - 29
benzene - 30.0 - 15
xylene - 5.0 - 10
这是我的代码:
def akey(a):
z = a.split(' -')
v = [z[0]]
x = [str(i) for i in v]
return x
def bkey(b):
z = b.split(' -')
v = [z[1]]
x = [float(i) for i in v]
return x
labelList.sort(key=akey)
labelList.sort(key=bkey)
感谢您的帮助
【问题讨论】:
-
这不是稳定排序的意思。 1.2 小于 1.3,所以
BAC - 1.2 - 10将排在ABC - 1.3 - 29之前 -
稳定排序意味着具有相同键值的任何元素将在单个排序操作期间保持它们相对于彼此的顺序。不保证不同排序的顺序。