哈希和不可哈希
def make_album(singer,album,songs_num=''): if songs_num!='': return {'album':album,'singer':singer,'songs_num':songs_num} else: return {'album':album,'singer':singer} albulm1=make_album(singer='周杰伦',album='七里香') albulm2=make_album(singer='周杰伦',album='范特西') albulm3=make_album(singer='周杰伦',album='牛仔很忙',songs_num=10) albulm_set={albulm1,albulm2,albulm3} print(albulm_set)
运行后提示错误albulm_set={albulm1,albulm2,albulm3},TypeError: unhashable type: 'dict' 这里报错因为字典是不可哈希的类型.
以下来自: https://www.cnblogs.com/liangmingshen/p/10889172.html
什么是可哈希(hashable)?
- 简要的说可哈希的数据类型,即不可变的数据结构(字符串str、元组tuple、对象集objects)。
哈希有啥作用?
- 它是一个将大体量数据转化为很小数据的过程,甚至可以仅仅是一个数字,以便我们可以用在固定的时间复杂度下查询它,所以,哈希对高效的算法和数据结构很重要。
什么是不可哈希(unhashable)?
- 同理,不可哈希的数据类型,即可变的数据结构 (字典dict,列表list,集合set)