是否有没有值的Python字典?


问题内容

代替这个:

a = {"foo": None, "bar": None}

有没有办法写这个?

b = {"foo", "bar"}

仍然让我们b有恒定的访问时间(即不是Python集合,无法将其键入)?


问题答案:

实际上,在Python 2.7和3.2+中,这确实有效:

>>> b = {"foo", "bar"}
>>> b
set(['foo', 'bar'])

您不能[]对集合(“键入”)使用访问权限,但是可以测试是否包含:

>>> 'x' in b
False
>>> 'foo' in b
True

集合尽可能接近无值词典。它们具有平均情况下的恒定时间访问,需要可哈希对象(即,没有存储列表或集合中的字典),甚至支持它们自己的理解语法:

{x**2 for x in xrange(100)}