如何从两个不同的列表中删除重复项?

时间:2018-06-14 04:16:22

标签: python-3.x list duplicates

我想要删除positivenegative中出现的重复字词。这是我使用的代码。

positive= 'an excellent film'
negative='a bad film'

for i in [positive]:
    if i in [negative]:
        print (i)
        positive.remove(i)
    print (positive)

但是,此代码将打印所有正面词而不是正面词而不重复。我该如何更改代码?

期望的输出:

positive= 'an', 'excellent'
negative= 'a', 'bad'

2 个答案:

答案 0 :(得分:2)

使用Amit Parashar的提示:

positive = 'an excellent film'
negative = 'a bad film'

positive = set(positive.split())
negative = set(negative.split())

positive_uniq = positive.difference(negative)
negative_uniq = negative.difference(positive)

print(positive)  # {'an', 'excellent'}
print(negative)  # {'a', 'bad'}

答案 1 :(得分:1)

正如其他答案中所提到的,使用Python的“SET”数据结构很容易。但是,如果您只想使用列表,则可以参考以下解决方案。

我们需要拆分 字符串,以便Python可以将其视为不同的字词,然后使用两个嵌套for循环,工作是完成。最后,我正在使用join方法以 Desired Output 中解释的方式打印它。

positive = 'an excellent film'
negative = 'a bad film'

positive = positive.split()
negative = negative.split()

for i in positive:
    if i in negative:
      positive.remove(i)
      negative.remove(i)

for j in negative:
    if j in positive:
      negative.remove(j)
      positive.remove(j)

print("Positive:", ", ".join(positive))
print("Negative:", ", ".join(negative))