cmp_to_key()
在functools包里的函數,將老式的比較函數(cmp function)轉化為關鍵字函數(key function)。
與接受key function的工具一同使用(如 sorted(), min(), max(), heapq.nlargest(), itertools.groupby())。該函數主要用來將程序轉成 Python 3 格式的,因為 Python 3 中不支持比較cmp()。
sorted(iterable,key = functools.cmp_to_key(locale.strcoll))
cmp()與key()的不同
cmp(x,y)是可調用的,接受兩個參數,比較這兩個參數並根據他們的大小關系返回負值、零或正值中的某一個。
如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
更具體些,-1在排序中代表不改變x,y位置,1代表變成y,x位置。
比如
nums = ["1","10","2","3"]
sorted(nums,cmp(lambda x,y:int(x+y)-int(y+x)))
---->["10","1","2","3"]
key()也是可調用的,接受一個參數,同時返回一個可以用作排序關鍵字的值。
nums = ["1","10","2","3"]
key = functools.cmp_to_key(lambda x,y:int(x+y)-int(y+x))
sorted(nums,key = key)
----->["10","1","2","3"]
這個方法比較老了