Python3之字串比較——重寫cmp函式
阿新 • • 發佈:2018-12-16
由於在C ++中習慣了使用CMP函式,所以在遇到字串排序時,想當然的去使用sort(開始,結束,CMP)去對列表進行排序,但結果好像不行。
後來查閱網上資料,好像在python3中CMP函式已經被取代了。故而只能另求他法了。下面是很簡單的一個字串日期提取及根據日期排序。需求是這樣的,由於從文字中讀入的字串是無序的,但在輸出時需要按時間前後輸出。不多說,直接上程式碼。
#!/usr/bin/python #_*_coding:utf-8_*_ import functools import re def cmp(str1,str2): day1 = (re.search(r'\d{4}_\d{2}_\d{2}', str1)).group() day2 = (re.search(r'\d{4}_\d{2}_\d{2}', str2)).group() start1 = (re.search(r'Start\d', str1)).group() start2 = (re.search(r'Start\d', str2)).group() if day1 > day2: return 1 elif day1 < day2: return -1 elif start1 > start2: return 1 elif start1 < start2: return -1 else: return 0 if __name__ == '__main__': strList = [r"STRLIST2018_07_30\Start0", r"STRLIST2018_05_01\Start0", r"STRLIST2018_06_30\Start1", r"STRLIST2018_05_01\Start1", r"STRLIST2018_05_30\Start0", r"STRLIST2018_06_01\Start0", r"STRLIST2018_06_30\Start0", r"STRLIST2018_05_30\Start1", r"STRLIST2018_07_30\Start1", r"STRLIST2018_06_01\Start1" ] print("Is not sorted--------------") for i in strList: print(i) strList = sorted(strList,key = functools.cmp_to_key(cmp)) print("Has sorted-----------------") for i in strList: print(i)
以上為自定義排序的一個小小實現,對於自定義排序,本小白主要用於對自定義結構體的陣列,字典等的排序,以後會用於更多地方。
歡迎大家給予指導意見或者共同討論程式設計之樂趣,希望能兩三猿友,共同進步。