关尔1994

导航

关于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

 

posted on 2021-08-07 01:35  关尔1994  阅读(4405)  评论(0)    收藏  举报