2.5 凍結(jié)字典和集合
一般情況下,創(chuàng)建好字典和集合之后可以對其中的元素進(jìn)行添加或刪除。但是有時,我們出于某種原因需要將字典和集合進(jìn)行凍結(jié),不允許對其中的元素進(jìn)行添加或刪除。這個時候,我們就可以使用MappingProxyType函數(shù)和frozenset函數(shù)直接創(chuàng)建或凍結(jié)字典或集合。創(chuàng)建凍結(jié)字典
from icecream import ic
from types import MappingProxyType
dct = MappingProxyType({'a': 1})
try:
del dct['a']
except TypeError as err:
ic(err)
ic| err: TypeError(“‘mappingproxy’ object does not support item deletion”)
凍結(jié)集合
from icecream import ic
st = {1, 2}
st.add(3)
ic(st)
st = frozenset(st)
try:
st.add(4)
except AttributeError as err:
ic(err)
ic| st: {1, 2, 3}
ic| err: AttributeError(“‘frozenset’ object has no attribute ‘a(chǎn)dd’”)
可以看到,凍結(jié)之后的字典或集合就不能添加元素進(jìn)去,也不能刪除元素了。接下來測試一下,凍結(jié)的字典和集合的哈希屬性:
from icecream import ic
from types import MappingProxyType
st = frozenset({1, 2})
dct = MappingProxyType({'a': 1})
ic(hash(st))
ic(hash(dct))
ic| hash(st): -1826646154956904602
Traceback (most recent call last):
File “E:/BaiduNetdiskWorkspace/FrbPythonFiles/t1.py”, line 7, in
ic(hash(dct))
TypeError: unhashable type: ‘mappingproxy’文章來源:http://www.zghlxwxcb.cn/news/detail-433983.html
我們看到,凍結(jié)后的集合變得可哈希了,但是凍結(jié)的字典還是不可哈希。文章來源地址http://www.zghlxwxcb.cn/news/detail-433983.html
到了這里,關(guān)于【Python】凍結(jié)字典和集合的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!