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