在比较两个列表时如何获取不匹配元素的列表?

时间:2019-05-10 05:35:46

标签: python list compare

我有实际的文件名和预期的文件名列表。 我必须归档两个列表的匹配元素,并将其写入csv文件的一行中。其余在预期文件名列表中不匹配的元素必须写在实际文件名元素的任何位置

我已经编写了类似于如果实际文件名在预期文件名中的代码,则写在csv文件的同一行中,否则为空白。但是我需要将预期文件的所有其余不匹配元素写入实际文件名的任何行中。如果预期的文件名结尾,请留空。

期望的文件名

['AGN_2014Q4', 'AGN_2015Q4', 'AGN_2016Q4', 'AGN_2017Q4', 'AGN_2018Q4', 'AGN_2014Q3', 'AGN_2015Q3', 'AGN_2016Q3', 'AGN_2017Q3', 'AGN_2018Q3', 'AGN_2014Q2', 'AGN_2015Q2', 'AGN_2016Q2', 'AGN_2017Q2', 'AGN_2018Q2', 'AGN_2014Q1', 'AGN_2015Q1', 'AGN_2016Q1', 'AGN_2017Q1', 'AGN_2018Q1']

实际文件名

['AGN_2016Q1', 'AGN_38', 'AGN_2014Q3', 'AGN_19', 'AGN_2017Q4', 'AGN_2018Q4', 'AGN_31', 'AGN_2018Q1','AGN_2015Q1', 'AGN_2016Q4', 'AGN_2017Q2', 'AGN_2017Q3', 'AGN_2016Q2', 'AGN_2015Q4', 'AGN_2018Q2', 'AGN_2015Q3', 'AGN_2017Q1', 'AGN_2018Q3', 'AGN_35', 'AGN_2015Q2', 'AGN_34', 'AGN_2016Q3']

结果应在csv文件2列中 (https://docs.google.com/spreadsheets/d/1CjMgIqc7BXrYx91AxGI7AIxsgcjW1fB4QRlnTHF9OGw/edit?usp=sharing)

1 个答案:

答案 0 :(得分:0)

两个具有相同和不同值的列表:

>>> a = ['a', 'b', 'c', 'd']
>>> b = ['c', 'd', 'e', 'f'] 

首先,两个列表中的值相同:

>>> list(set(a).intersection(b))
['c', 'd']

现在,在第一个列表中是唯一的,在第二个列表中是唯一的:

>>> list(set(a) - set(b))
['b', 'a']
>>> list(set(b) - set(a))
['e', 'f']

但是,您可以看到它失去了顺序。您可以用list

a.sort()进行排序