因此,在Python中,字符串具有固有的顺序。

>>>'A' < 'B' < 'C'
True
>>>"angler" < "beta fish" < "coleocanth"
True


大多数消息人士说,Python中的字符串按ASCII代码排序-显然,这是毫无意义的,因为Python 3字符串是Unicode。

显然,对于A,B,C ...都有定义的顺序,大概其他语言也具有相似的字母顺序。

但是,您如何订购“♳”,“▧”和“ⵞ”?更重要的是,您如何订购A,𝐀,𝐴,𝑨,𝒜,𝓐,𝔄,𝔸,𝖠,𝗔,𝘈,𝙰,🄐,🅐,🅰,🇦,A和Ⱥ?

我认为它不适合比较Unicode代码点;这将是最简单的并且似乎是一个合理的默认值,但是它也建议例如“¾” “⓵”>“⒌”>“⑽” '>'⑮'和“ A”>“ C”(全角A)似乎有点……非Python风格,即使这是一个非常奇怪的边缘情况。

是否使用了更复杂的规则集,如果有,则在何处进行记录?是实现定义的还是有标准的?

最佳答案

docs中(令人沮丧的是,文档中未提及字符串类型):


  字符串(str的实例)使用其字符的数字Unicode代码点(内置函数ord()的结果)在字典上进行比较。


这是规范性的,对于实施而言是准确的。您可以查看字符串比较here的Python 3.6.3实现。

10-08 07:08
查看更多