我的问题是,如果列表包含不同类型的元素,我该如何对其进行排序?以及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
答案 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