我正在尝试编写一个python程序,如果给定一个字符串列表,它将从列表中的各个字符串中删除重复字符。我目前的工作是:
#program: removeduplicates.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-lst", nargs='+', type=str, required=True)
xyz = parser.parse_args()
duplist = xyz.lst
def duplicate_destoryer(duplist):
finallist = []
for word in duplist:
x = set()
list = []
for ch in word:
if ch not in x:
set.add(ch)
list.append(ch)
finallist.append(list)
return finallist
if __name__ == "__main__":
print(duplicate_destoryer(duplist))
在我的命令行中输入
python removeduplicates.py -lst aarrtt ddwwtt
我想要的输出是(不管是在列表括号中还是简单地写出来):
art dwt
我写的代码在逻辑上是有意义的,但我不断发现错误,set对象的描述符'add'不适用于公平的'str'对象,但随着我进一步研究,我感觉我不断遇到越来越多的代码示例,其中set.add()用于字符串对象
有人能给我指出正确的方向或告诉我我做错了什么吗
你非常非常接近。只需使用以下内容:
而不是:
这将获取列表列表作为输出,而不是您期望的字符串列表。 要更正此问题,您可以执行以下操作:
而不是:
请注意,不应使用
list
作为变量名。它是一个内置的Python这里有两件事:
以下是具有所需输出的修改版本:
所指出的问题是,您正在使用
set引用的是set类,而不是实例。您的代码的修复程序是:
正如您所知,这也可以在一行中完成,但代价是降低代码的可读性,并且可能会丢失字符输入的顺序:
首先,通过将字符串强制转换为列表,将其转换为字符列表。然后删除将列表转换为集合的重复字符,然后使用join方法将其转换回字符串。我们在一个理解列表中执行所有这些操作,迭代每个传入字符串
相关问题 更多 >
编程相关推荐