在Python中找到两个列表之间的对称差异时如何保持顺序?

时间:2020-10-14 09:44:22

标签: python list set

给出两个列表,目的是找到它们之间的不重叠值。

基于OP中讨论的建议。这可以通过两种方法之一实现

list_one=['ISL','BUK','ORG','CLC','STS','PLP','t1','t2','t3','t4','DE1','DE2','DE4']
list_two=['t1','t2','t3','t4']

APP1=set(list_one) ^ set(list_two)

APP2 = set(list_one).symmetric_difference(list_two)

两个建议均已输出

{'DE4', 'DE2', 'CLC', 'STS', 'ORG', 'BUK', 'ISL', 'DE1', 'PLP'}

虽然可以,但是来自list_one的顺序却失真了。 我的问题是,如何将上面的代码修改为如下所示的输出,其中的顺序遵循list_one

EXPECTED_OUTPUT=['ISL','BUK','ORG','CLC','STS','PLP','DE1','DE2','DE4']

1 个答案:

答案 0 :(得分:1)

inner_set = set(list_one) & set(list_two)
EXPECTED_OUTPUT = [i for i in list_one + list_two if i not in inner_set]

# or
EXPECTED_OUTPUT = [i for i in list_one + list_two if not (i in list_one and i in list_two)]