Python中set是一個可以自動去重的數據類型,但使用set()方法對其他數據類型進行轉換時往往會遇到順序被打亂的情況,例如:
string = "abcdefacghijkbclm" print(set(string)) #執行結果 {'e', 'f', 'a', 'l', 'h', 'b', 'j', 'm', 'g', 'c', 'i', 'k', 'd'}
而使用list又不能很好的去重:
string = "abcdefacghijkbclm" print(list(string)) #執行結果 ['a', 'b', 'c', 'd', 'e', 'f', 'a', 'c', 'g', 'h', 'i', 'j', 'k', 'b', 'c', 'l', 'm']
組合來用,並使用sort()進行排序,就可以較好的獲取到一個保持原順序的結果:
string = "abcdefacghijkbclm" listl = list(string) lists = list(set(listl)) lists.sort(key=listl.index) print(lists) #執行結果 ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm']
注意sort()中key的使用是保持順序的關鍵
除此之外,也可以對string遍歷去重:
string = "abcdefacghijkbclmb" res = "" for i in range(len(string)): if (string[i] not in res): res = res+string[i] print (res) #執行結果 abcdefghijklm