关于Python中字符串的去重


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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM