使用列表中的未知元素在Python列表中搜索特定字符串

时间:2017-06-15 02:53:48

标签: python python-3.x

我有一个列表,其中包含来自.csv文件的多个重复字符串:

listOne = ['strOne', 'strTwo', 'strThree', 'strOne', 'strTwo', 'strOne']

并希望从中创建一个新列表以仅保留唯一字符串:

listTwo = ['strOne', 'strTwo', 'strThree']

我读取文件并填充原始列表,如下所示:

def createOrigList(filename):
    dataFile = open(filename,'r')
    for line in dataFile:
        origList.append(line)

def createListOne():
    for item in origList:
        tempList = item.split(',')
        strOne = tempList[0].strip()
        listOne.append(strOne)

我尝试实施this earlier post并使用嵌套在if (... not in ...)循环中的Python for条件来填充listTwo,但是当我尝试打印{{1}时没有添加任何东西。

listTwo

在尝试创建def createListTwo(): for item in listOne: item = item.strip() if (item not in listTwo): listTwo.append(item) 时,我不是在比较确切的字符串吗?

5 个答案:

答案 0 :(得分:2)

您可以将其投放到set。像这样:

listTwo = set(listOne)
print(listTwo)

这只会保留listOne中的唯一元素。

答案 1 :(得分:2)

因为已经回答你可以使用python set。

但是,没有人询问您是否需要保留原始列表的顺序,因为set不保留原始列表的顺序。如果您需要保留原始列表的顺序,可以使用OrderedDict

from collections import OrderedDict

listOne = ['strOne', 'strTwo', 'strThree', 'strOne', 'strTwo', 'strOne']
listTwo = list(OrderedDict.fromkeys(listOne))
print(listTwo)

答案 2 :(得分:1)

你走了:

listTwo = [item.strip() for item in set(listOne)]

答案 3 :(得分:1)

最简单的事情是使用SET,它将删除所有重复的字符串。您还可以将其转换为列表

答案 4 :(得分:1)

使用set删除列表中的重复项。

listOne = list(set(listOne))

如果列表中的值包含空格,那么您可以删除列表中的每个项目并将其设为set

listOne = list(set([x.strip() for x in listOne]))

请记住,上述答案都不会保留元素的顺序。