繁体   English   中英

Python中两组元组的区别

[英]Difference of two sets of tuples in Python

我有两组元组ab

a = set([(1,'a'),(34,'b'), (82,'c')])
b = set([(8,'a'),(98,'c')])

我想要一套c

c = set([(34,'b')])

在python中执行此操作的最有效方法是什么?

我猜O(n)是最有效的:

>>> b2 = {x for n,x in b}
>>> c = {(n,x) for (n,x) in a if x not in b2}
>>> c
{(34, 'b')}

我首先使用dicts代替a和b的集合:

a = {k: v for (v, k) in a}
b = {k: v for (v, k) in b}

然后,它只是取a不在b

print [(k, a[k]) for k in set(a.keys()) - set(b.keys())]

要么

b_keys = set(b.keys())
print [(k,v) for (k,v) in a.items() if k not in b_keys}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM