课后习题
定义一个列表 list1 和元组 tuple1,当 tuple1 作为字典 dict1 的键时,是否能够成功定义字典?请说明原因。执行后,观察执行结果。
list1 = [ 1, 2, 3] tuple1 = ( 'abc', list1 ) print( type( tuple1 )) dict1 = { tuple1, 1 } # 此语句是否能够正确执行?
课程代码、课件及其他相关资料地址
https://gitee.com/wilsonyin/zero-basics-python
作者回复: 如果 tuple1 是一个已经定义的元组,那么 {tuple1, 1} 将创建一个包含该元组和整数 1 的集合 dict1 = {tuple1: 1} 是创建字典
作者回复: 有几种常见的方法, 第一种是你明确知道对象的类型,比如字符可哈希 ,列表不可哈希。 当然不可能所有的工作过程都用简单类型,如果自己定义的类,可以通过魔术方法__hash__判断对象是否支持哈希。 那么继续延伸下去,面向解决问题来说,是否可哈希,意味着该对象,是否能从一个key得到唯一的值 ,hash(key) = value, 这样设计可以加快查找速度。比如经典的字典数据类型,就利用了哈希表,因此它就要求对象必须是可哈希的,否则没办法从一个key得到对应的value,那么这个对象,自然也就不能做字典的key使用了