sort()如何在python中工作?有优惠顺序吗?

时间:2017-06-24 05:26:04

标签: python sorting

我的问题是,如果列表包含不同类型的元素,我该如何对其进行排序?以及sort()的首选顺序是什么?

a = [1,22,7,4]
a.sort()
print(a)
#print(a) gives [1, 4, 7, 22]
b = ['aa','','abc']
b.sort()
print(b)
# print(b) gives ['', 'aa', 'abc']

k = [1,22,'',4]
k.sort()
#TypeError

1 个答案:

答案 0 :(得分:1)

在python 2中你可以对k进行排序,但是python 3会给出一个合理的错误TypeError: '<' not supported between instances of 'str' and 'int'。但是,如果您将上述内容更改为:

k.sort(key=str)
print(k)

你得到:

['', 1, 22, 4]

但你会得到一些奇怪的结果,例如:

k.append(0.00001)
k.sort(key=str)
print(k)

给出:

 ['', 1, 1e-05, 22, 4]

所以答案是你在比较时将所有元素转换为可比类型,即具有<成员的类型,所有成员都可以有意义地转换为。然后,排序首选项基于类型以及它如何进行比较,例如:

'0.9002' < '1'
True

但:

'0.9002' < '0000'
True