我之前提出过一个关于用CSV阅读并使用Pandas的问题,虽然这让我更接近我的答案,但这并不是我想要的。
我有两个清单:
a1 = [['1', 'foo'], ['2', 'bar'], ['3', 'Foo']]
a2 = [['1', 'foo'], ['2', 'bar'], ['3', 'Foo'], ['4', 'Bar']]
我希望找回这些东西:
我从我的CSV中获取了我想要使用Pandas的数据,现在我以上面显示的列表格式显示它们。提前谢谢!
答案 0 :(得分:2)
最简单的解决方案是将其转换为集合
a1 = [['1', 'foo'], ['2', 'bar'], ['3', 'Foo']]
a2 = [['1', 'foO'], ['2', 'bar'], ['3', 'Foo'], ['4', 'Bar']]
a1_set = set([v[0] for v in a1])
a2_set = set([v[0] for v in a2])
print("Items in a1,but not a2:",[x for x in a1 if x[0] in a1_set-a2_set])
print("Items in a2,but not a1:",[x for x in a2 if x[0] in a2_set-a1_set])
d1 = dict(a1)
d2 = dict(a2)
items_in_both = [(k,(d1[k],d2[k]) if d1[k] != d2[k] else d1[k]) for k in a2_set&a1_set]
print("Items in both sets:", items_in_both)
答案 1 :(得分:0)
所以,基本上你想找到一个列表而不是另一个列表中的元素:
[x for x in a2 if x not in a1]
如果您想要使用公共元素:
[x for x in a2 if x in a1]