在 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
。
我们不能将 a
set
用作另一个的成员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 是 Python
set
对象的不可变版本,因此它可以用作另一个元素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
,因为这些数据结构在内部使用哈希值。可哈希对象包括 – str
、int
、bool
、tuple
、frozenset
。
不可散列的对象包括 – list
、dict
、set
。
请注意,tuples
仅frozensets
当它们的元素可哈希时,才可哈希。
或者,您可以使用列表列表。
主程序
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