Каков наилучший способ создания набора объектов, похожих на bitarray, чтобы я мог эффективно тестировать членство. Наивный способ, кажется, не работает, как я ожидал:Python bitarray set
>>> from bitarray import bitarray
>>>
>>> bitarray_set = set([bitarray('0000'), bitarray('0001')])
>>> bitarray_set
set([bitarray('0001'), bitarray('0000')])
>>>
>>> bitarray('0000') in bitarray_set
False
Обходной должен держать отдельный набор строк или другой более дружественный объект в качестве ключей. Затем преобразуйте bitarray в строку и проверьте членство в этом наборе. Но это кажется немного громоздким. Есть ли лучшее решение?
Я думаю, что вы правы в этой проблеме, но поскольку массивы изменчивы, возможно, они не предназначены для хэширования, и мы должны иметь 'bitarray .__ hash__ = None', чтобы предотвратить это. – DSM
@ DSM: Да, это имело бы смысл. Как я уже сказал, из документации неясно, каково должно быть поведение. Но они либо должны стать неизменными, либо неумелыми. – BrenBarn