【问题标题】:How do I remove duplicates from two different lists?如何从两个不同的列表中删除重复项?
【发布时间】:2018-11-23 18:16:36
【问题描述】:

我想要做的是删除出现在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'

【问题讨论】:

  • 请发布所需的输入输出。见minimal reproducible example
  • @user3483203 完成
  • 为什么aan被删除了,它们不是重复的
  • list(set(list1).intersection(list2))
  • 输出的顺序重要吗?

标签: python-3.x list duplicates


【解决方案1】:

使用 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'}

【讨论】:

  • 您不需要使用intersectiondifference_update。只需对两个字符串都使用difference
【解决方案2】:

正如其他答案中提到的,使用 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))

【讨论】:

    猜你喜欢
    • 2018-05-16
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2015-07-20
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多