因此,在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实现。