Я пытаюсь сделать набор наборов на Python. Я не могу понять, как это сделать.
Начиная с пустого набора xx
:
xx = set([])
# Now we have some other set, for example
elements = set([2,3,4])
xx.add(elements)
но я получаю
TypeError: unhashable type: 'list'
или
TypeError: unhashable type: 'set'
Возможно ли иметь набор наборов в Python?
Я имею дело с большой коллекцией наборов, и я не хочу иметь возможность иметь дело с дублирующимися наборами (набор B наборов A1, A2, ...., An "отменил бы" два набора, если Ai = Aj)
источник
set(map(frozenset, t))
Использовать
frozenset
внутрь.источник
Так что у меня была точно такая же проблема. Я хотел создать структуру данных, которая работает как набор наборов. Проблема в том, что наборы должны содержать неизменяемые объекты. Итак, вы можете просто сделать его набором кортежей. У меня это сработало!
источник
A.add( (4,3,2)); A.add((2,4,3)); A.add((2,3,4))
добавит три различных элемента, в то время как оригинальный вопрос о «множестве множеств», что означает , что(2,3,4)
,(4,3,2)
,(2,4,3)
являются одинаковыми.По состоянию на 2020 год официальная документация Python рекомендует использовать
frozenset
для представления наборов.источник