
7-1.字典方法。哪个字典方法可以用来把两个字典合并到一起。
答案: dict.update(dict2)
将字典 dict2 的键 -值对添加到字典 dict 中
7-2.字典的键。 我们知道字典的值可以是任意的 Python 对象,那字典的键又如何呢?请试着
将除数字和字符串意外的其他不同类型的对象作为字典的键, 看看哪些类型可以, 哪些不行。
对那些不能作为字典的键的对象类型,你认为是什么原因呢?
答案:键必须是可哈希的。 所有不可变的类型都是可哈希的, 因此他们都可以作为字典的键。
一个要说明的问题是:值相等的数字表示相同的键。换句话说,整型数字 1 和浮点型 1.0 的
哈希值是相同的,即它们是相同的键。同时,也有一些可变对象 (很少 )是可哈希的,它们可
以作为字典的键,但很少见。
用元组做有效的键, 必须要加限制: 元组中只包括像数字和字符串这样的不可变参数, 才可
以作为字典中有效的键。
内建函数 hash()可以判断某个对象是否可以做一个字典的键, 如果非可哈希类型作为参数传
递给 hash()方法,会产生 TypeError 错误,否则会产生 hash 值,整数。
>>> hash(1)
1
>>> hash('a')
-468864544
>>> hash([1,2])
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
hash([1,2])
TypeError: unhashable type: 'list'
>>> hash({1:2,})
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
hash({1:2,})
TypeError: unhashable type: 'dict'
>>> hash(set('abc'))
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
hash(set('abc'))
TypeError: unhashable type: 'set'
>>> hash(('abc'))
-1600925533
>>> hash(1.0)
1
>>> hash(frozenset('abc'))
-114069471
>>> hash(((1,3,9)))