在平时的工作中,处理重复数据不可避免,在大数据时代更是有着海量的数据,如果不对数据进行去重,会严重影响分析效率。因而,我们在进行大数据分析时的第一步就是检测和消除其中的重复数据,通过数据去重,一方面可以减少存储的空间和网络带宽的占用;另一方面可以减少数据的分析量。在工作中,遇到最多的就是字符串和列表的去重,下面介绍几种字符串的去重方法:
1.通过for循环遍历字符串去重
str='abcdefaaffegecdh'
new_str=''
for i in str:
if i not in new_str: #如果不在结果字符串中
new_str += i #添加到结果字符串的末尾
print (new_str)
output:
abcdefgh
2.通过while循环遍历字符串去重
str='abcdefaaffegecdh'
new_str=''
i = len(str)-1 #获取字符串的长度-1,即最大索引值
while True:
if i >=0: #如果还超出索引范围
if str[i] not in new_str:
new_str += (str[i])
i-=1
else: #超出索引范围则结束循环
break
print (new_str)
output:
hdcegfab
3.使用列表的方法去重
str='abcdefaaffegecdh'
str1=set(str) #转换为集合,则去除重复元素
print(str1)
new_str = list(set(str)) #将集合转换为列表
print('_'.join(new_str)) #将列表连接为字符串并输出
new_str.sort(key=str.index) #对列表排序
print(new_str)
print(''.join(new_str)) #将排序后的列表连接为字符串并输出
output:
{'e', 'b', 'g', 'f', 'a', 'h', 'c', 'd'}
e_b_g_f_a_h_c_d
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
abcdefgh
4.在原字符串中直接删除
str='abcdefaaffegecdh'
len = len(str) # 字符串下标总长度
for s in str:
if str[0] in str[1:len]:
str = str[1:len]
else:
str= str[1:len]+str[0]
print(str)
output:
bafgecdh
5.使用fromkeys()方法把字符串转换成字典
str='abcdefaaffegecdh'
dict={}.fromkeys(str)
mylist=list(dict.keys())
mylist = list({}.fromkeys(str).keys())
print(mylist)
print ('_'.join(mylist))
output:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
a_b_c_d_e_f_g_h
参考资料:《python编程锦囊》明日科技。