在 Python 中创建一组集合

在 Python 中创建一组集合

Create a Set of Sets in Python

集合对象不可散列,因此我们不能创建一组集合。但是,我们可以创建一个set冻结集或一个列表列表。集合对象不能是另一个对象的成员,set因为它们是可变的和不可散列的。

主程序
set_of_sets = set() # ✅ Create a set of frozensets set_of_sets.add(frozenset(['bobby', 'hadz'])) set_of_sets.add(frozenset(['.', 'com'])) # 👇️ {frozenset({'com', '.'}), frozenset({'bobby', 'hadz'})} print(set_of_sets) # ----------------------------------------------------- # ✅ Create a list of lists list_of_lists = [ ['bobby', 'hadz'], ['.', 'com'] ] print(list_of_lists) # 👉️ [['bobby', 'hadz'], ['.', 'com']]

第一个示例创建了一个set对象frozenset

我们不能将 aset用作另一个的成员set或用作字典中的键,因为set对象是可变的且不可散列的。

解决这个问题的一种方法是使用frozenset.

主程序
set_of_sets = set() set_of_sets.add(frozenset(['bobby', 'hadz'])) set_of_sets.add(frozenset(['.', 'com'])) # 👇️ {frozenset({'com', '.'}), frozenset({'bobby', 'hadz'})} print(set_of_sets)

我们使用frozenset
而不是
set. 该类frozenset将可迭代对象作为参数。

frozenset 是 Pythonset对象的不可变版本,因此它可以用作另一个元素set或字典中的键。

您还可以使用包含不可变元素的元组作为
set.

主程序
set_of_sets = set() set_of_sets.add(('bobby', 'hadz')) set_of_sets.add(('.', 'com')) # 👇️ {('bobby', 'hadz'), ('.', 'com')} print(set_of_sets)

元组对象是不可变的并且是可散列的。

Python 中的大多数不可变内置对象都是可散列的,而可变对象是不可散列的。

如果一个对象是可哈希的,那么它可以用作字典中的键和 a 中的元素set,因为这些数据结构在内部使用哈希值。

可哈希对象包括 – strintbooltuplefrozenset

不可散列的对象包括 – listdictset

请注意,tuplesfrozensets当它们的元素可哈希时,才可哈希。

或者,您可以使用列表列表。

主程序
list_of_lists = [ ['bobby', 'hadz'], ['.', 'com'] ] print(list_of_lists) # 👉️ [['bobby', 'hadz'], ['.', 'com']] print(list_of_lists[0]) # 👉️ ['bobby', 'hadz'] print(list_of_lists[0][0]) # 👉️ bobby

如果适合您的用例,列表的列表比对象set列表更容易使用。frozenset

发表评论