如何比较列表中的字符串
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']
答案 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]