为啥不同类型的 Python 对象按类型名称排序? [复制]

Posted

技术标签:

【中文标题】为啥不同类型的 Python 对象按类型名称排序? [复制]【英文标题】:Why are Python objects of different types ordered by type names? [duplicate]为什么不同类型的 Python 对象按类型名称排序? [复制] 【发布时间】:2010-10-13 13:08:02 【问题描述】:

来自 Python 文档:http://docs.python.org/library/stdtypes.html#comparisons

实现说明:除数字外的不同类型的对象按类型名排序;不支持正确比较的相同类型的对象按其地址排序。

是否有任何理由选择这样做而不是引发异常?

【问题讨论】:

【参考方案1】:

您引用的那一行大约有四行:

不同类型的对象,除了 不同的数字类型和不同的 字符串类型,从不比较相等; 此类对象的顺序一致 但是任意(这样排序一个 异构数组产生一个 一致的结果)。

您不想在对不同类型的对象列表进行排序时引发异常。

【讨论】:

请注意,Python 3.x 在比较不同的非强制类型时引发异常。 实际上我确实想在对不同类型的对象列表进行排序时引发异常:)【参考方案2】:

将不同类型的对象按明确的顺序收集到一个单独的排序列表中很有用。通过给所有对象一个稳定的排序顺序,这种行为是默认的。

【讨论】:

以上是关于为啥不同类型的 Python 对象按类型名称排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

根据字符串属性按字母顺序对对象数组进行排序

按日期对不同内容类型的内容排序帖子

WPF DataGrid 带有一键组合框,显示按枚举名称排序的枚举值

按数字(最高优先)然后按字母(字母顺序)对对象集合进行排序

为啥 MongoDB 在这里使用 scanAndOrder?

为啥在 Go 中将指针放入 interface 会导致反射丢失类型的名称?