【问题标题】:How does sort() work in python ? Is there any preference order?sort() 如何在 python 中工作?有优先顺序吗?
【发布时间】:2017-06-24 05:26:03
【问题描述】:

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

【问题讨论】:

标签: python sorting


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多