ในPython 2.xฉันสามารถส่งฟังก์ชันที่กำหนดเองไปยังฟังก์ชันการเรียงลำดับและ. เรียงลำดับได้
>>> x=['kar','htar','har','ar']
>>>
>>> sorted(x)
['ar', 'har', 'htar', 'kar']
>>>
>>> sorted(x,cmp=customsort)
['kar', 'htar', 'har', 'ar']
เพราะในภาษาของฉันพยัญชนะมาพร้อมกับคำสั่งนี้
"k","kh",....,"ht",..."h",...,"a"
แต่ในPython 3.xดูเหมือนว่าจะไม่สามารถส่งผ่านcmp
keyword ได้
>>> sorted(x,cmp=customsort)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'cmp' is an invalid keyword argument for this function
มีทางเลือกอื่นหรือไม่หรือฉันควรเขียนฟังก์ชันเรียงลำดับของตัวเองด้วย?
หมายเหตุ: ฉันทำให้ง่ายขึ้นโดยใช้ "k", "kh" ฯลฯ อักขระจริงคือ Unicodes และซับซ้อนกว่านั้นบางครั้งมีสระมาก่อนและหลังพยัญชนะฉันได้ใช้ฟังก์ชันเปรียบเทียบแบบกำหนดเองดังนั้นส่วนนั้นก็โอเค มีปัญหาเพียงอย่างเดียวคือฉันไม่สามารถส่งผ่านฟังก์ชันการเปรียบเทียบที่กำหนดเองไปยัง sorted หรือ .sort
sorted(x)
ไหน?