包含Python中的HashSet <integer> </integer>

时间:2014-11-03 21:58:13

标签: python contains hashset

在Java中我们有HashSet<Integer>,我需要在Python中使用类似的结构,如下所示:

A = [1, 2, 3]
S = set()
S.add(2)
for x in A:
    if S.contains(x):
        print "Example"

你能帮忙吗?

2 个答案:

答案 0 :(得分:44)

只需使用一套:

>>> l = set()
>>> l.add(1)
>>> l.add(2)
>>> 1 in l
True
>>> 34 in l
False

列表同样适用:

>>> ll = [1,2,3]
>>> 2 in ll
True
>>> 23 in ll
False

修改 请注意@ bholagabbar在下面的评论,in检查列表和元组的时间复杂度平均为O(n)(参见python docs here),而对于集合,它是平均值O(1)(最坏的情况也是O(n),但非常罕见,只有在__hash__实施不当时才会发生。)

答案 1 :(得分:1)

在Python中,有一个内置类型set。 与Java中的hashmap的主要区别是未键入Python set, 也就是说,在Python中拥有一组{'2', 2}是合法的。

开箱即用,类set没有实现contains()方法。 我们通常使用Python关键字in完成您想要的操作,即

A = [1, 2, 3]
S = set()
S.add(2)
for x in A:
  if x in S:
    print("Example")

如果这对您不起作用,则可以调用特殊方法__contains__(),但不建议这样做。

A = [1, 2, 3]
S = set()
S.add(2)
for x in A:
  if S.__contains__(x):
    print("Example")