【问题标题】:Compare two lists of strings and print non matches in Python? [duplicate]比较两个字符串列表并在 Python 中打印不匹配项? [复制]
【发布时间】:2020-09-30 11:35:44
【问题描述】:

我有两个列表:

listOne = ['John', 'James', Daniel', 'Peter', 'Luke']
listTwo = ['Daniel', 'Peter', Kate', 'Jenny']

我想比较这两个列表并返回不匹配的,如果需要,将其保存到另一个列表,所以输出应该是:

Non-Matches: 'Kate', 'Jenny'

我怎样才能做到这一点?我考虑将列表更改为集合,但没有成功

【问题讨论】:

  • 这能回答你的问题吗? Python, compute list difference
  • 为什么'James'、'John'、'Luke'没有输出?他们也不匹配?
  • 我在从文本文件中读取第一个列表时遇到问题,该列表显示为 listOne = ["'John', 'James', Daniel', 'Peter' , 'Luke'"] , 开头和结尾都有语音标记,这个效果会比较吗?它不起作用

标签: python list compare


【解决方案1】:

你可以使用 set ,看看这个函数:

def list_diff(list1, list2):
    return (list(list(set(list1)-set(list2)) + list(set(list2)-set(list1))))
diff_values = list_diff(listOne, listTwo) # call to this function 

python 集:https://docs.python.org/2/library/sets.html

【讨论】:

  • 我在从文本文件中读取第一个列表时遇到问题,该列表显示为 listOne = ["'John', 'James', Daniel', 'Peter' , 'Luke'"] , 开头和结尾都有语音标记,这个效果会比较吗?它不起作用
  • 是的,你现在的 list is len =1 of 1 item,尝试 listOne = [l.replace("'",'') for l in listOne[0].split(',') ] 使其成为以逗号分隔的多个项目的列表
【解决方案2】:

您可以使用set 来做到这一点

listOne = set(['John', 'James', 'Daniel', 'Peter', 'Luke'])
listTwo = set(['Daniel', 'Peter', 'Kate', 'Jenny'])
print(list(listTwo - listOne))

输出

['Kate', 'Jenny']

【讨论】:

  • 我在从文本文件中读取第一个列表时遇到问题,该列表显示为 listOne = ["'John', 'James', Daniel', 'Peter' , 'Luke'"] , 开头和结尾都有语音标记,这个效果会比较吗?它不起作用
猜你喜欢
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2016-10-23
  • 2023-02-25
相关资源
最近更新 更多