而不是:
a = {"foo": None, "bar": None}
有没有办法写这个?
b = {"foo", "bar"}
仍然允许b
具有恒定的时间访问权限(即不是Python集,无法键入)?
答案 0 :(得分:23)
实际上,在Python 2.7和3.2+中,这确实有效:
>>> b = {"foo", "bar"}
>>> b
set(['foo', 'bar'])
您无法在集合上使用[]
访问权限(“key into”),但您可以测试是否包含:
>>> 'x' in b
False
>>> 'foo' in b
True
集合尽可能接近无值字典。它们具有平均情况下的常量时间访问,需要可清除对象(即没有存储列表或集合中的dicts),甚至支持他们自己的理解语法:
{x**2 for x in xrange(100)}
答案 1 :(得分:18)
是的,sets
:
set() -> new empty set object
set(iterable) -> new set object
Build an unordered collection of unique elements.
答案 2 :(得分:3)
为了在恒定时间内“键入”一组,请使用in
:
>>> s = set(['foo', 'bar', 'baz'])
>>> 'foo' in s
True
>>> 'fork' in s
False