Python 嵌套列表中所有元素的集合

Python Set of All Element in a Nested List

我想通过这个函数将嵌套列表return中的所有元素以集合的形式出现,但是出现了错误。

list = [[0,4], [2,4], 5, [[[7,2], 3], 4]]

def setof(list):
  bag = set()
  for item in list:
    try: bag.add(item)
    except TypeError: bag.add(setof(item))
  return bag

print(setof(list))

Errors:
try: bag.add(item)
TypeError: unhashable type: ‘list’
During handling of the above exception, another exception occurred:
print(setof(list))
except TypeError: bag.add(setof(item))
TypeError: unhashable the: ‘set’

有谁知道为什么会发生这种情况或如何解决它,或者更好的方法吗?这是我第一次来这里。谢谢!

bag.add(setof(item)) 正在尝试添加一个集合作为 bag 的元素,而不是组合这些集合。使用

bag.update(setof(item))

您的问题来自 set.add(list)。这不是 Python 设置接受的东西。所以,你想把所有的内部列表变成集合。试试这个:

def setof(lst):
    bag = set()
    for item in lst:
        try:
            bag.add(set(item))
        except TypeError:
            bag.add(set([item]))
    return bag