Python|从列表中删除重复的子字符串
有时我们会遇到这样的问题:我们需要处理列表中的某些字符串,这些字符串由某个分隔符分隔,并且我们需要删除每个此类字符串中的重复项。解决这类问题的简单速记总是好的。让我们讨论一些可以做到这一点的方法。
方法 #1:使用set() + split()
这个特殊问题可以使用 split函数来解决,以获得目标字符串,然后设置它实际上会从字符串中删除重复性。
# Python3 code to demonstrate
# removing duplicate substrings
# using set() + split()
# initializing list
test_list = [ 'aa-aa-bb', 'bb-cc', 'gg-ff-gg', 'hh-hh']
# printing original list
print("The original list : " + str(test_list))
# using set() + split()
# removing duplicate substrings
res = [set(sub.split('-')) for sub in test_list]
# print result
print("The list after duplicate removal : " + str(res))
输出 :
The original list : ['aa-aa-bb', 'bb-cc', 'gg-ff-gg', 'hh-hh']
The list after duplicate removal : [{'aa', 'bb'}, {'cc', 'bb'}, {'gg', 'ff'}, {'hh'}]
方法 #2:使用{}
+ split()
+ 列表推导
对于我们需要将字符串完全隔离为单独组件的情况,我们可以使用这些方法来完成此任务。花括号转换为设置和休息所有功能类似于上面的方法。
# Python3 code to demonstrate
# removing duplicate substrings
# using {} + split() + list comprehension
# initializing list
test_list = [ 'aa-aa-bb', 'bb-cc', 'gg-ff-gg', 'hh-hh']
# printing original list
print("The original list : " + str(test_list))
# using {} + split() + list comprehension
# removing duplicate substrings
res = list({i for sub in test_list for i in sub.split('-')})
# print result
print("The list after duplicate removal : " + str(res))
输出 :
The original list : ['aa-aa-bb', 'bb-cc', 'gg-ff-gg', 'hh-hh']
The list after duplicate removal : ['cc', 'ff', 'aa', 'hh', 'gg', 'bb']