Существует ли питон Python без значений?

Вместо этого:

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

Есть ли способ написать это?

b = {"foo", "bar"}

И пусть b имеет постоянный доступ времени (т.е. не набор Python, на который нельзя вводить ключ)?

Ответ 1

Собственно, в 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)}

Ответ 3

Чтобы "ввести" в набор в постоянное время используйте in:

>>> s = set(['foo', 'bar', 'baz'])
>>> 'foo' in s
True
>>> 'fork' in s
False