哈希和不可哈希

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)  
原文地址:https://www.cnblogs.com/sunnydaybyday/p/15790052.html