如何在list.Python中比较字符串值列表

时间:2018-12-18 12:25:20

标签: python

如何比较列表中的字符串

a = [['abc','Hello World'],['bcd','Hello Python']]
b = [['abc','Hello World'],['bcd','Hello World'],['abc','Python World']]

我想比较两个列表之间的每个值。 首先,我希望结果为(b中的值而不是a中的值):

[['bcd','Hello World'],['abc','Python World']]

另一个要成为(a中的值,但b中没有):

['bcd','Hello Python']

2 个答案:

答案 0 :(得分:1)

这是sets

的工作

将列表列表转换为元组集(您不能拥有列表集,因为集合只能包含hashable个对象,而列表中的所有内置可变对象均不包含)。

a = set(map(tuple, [['abc','Hello World'],['bcd','Hello Python']]))
b = set(map(tuple, [['abc','Hello World'],['bcd','Hello World'],['abc','Python World']]))

或直接将其创建为元组集:

a = {('abc','Hello World'),('bcd','Hello Python')}
b = {('abc','Hello World'),('bcd','Hello World'),('abc','Python World')}

然后,您可以轻松而有效地获得差异:

print(b - a)
# {('abc', 'Python World'), ('bcd', 'Hello World')}

print(a - b)
# {('bcd', 'Hello Python')}

甚至是路口

print(a & b)
# {('abc', 'Hello World')}

或联合:

print(a | b)
# {('abc', 'Python World'), ('bcd', 'Hello World'), ('abc', 'Hello World'), ('bcd', 'Hello Python')}

答案 1 :(得分:0)

如果您希望有一个快速解决方案而又不关心性能,可以使用

b_not_in_a = [i for i in b if i not in a]
a_not_in_b = [i for i in a if i not in b]