Python字典操作与键的探索

版权申诉
0 下载量 156 浏览量 更新于2024-08-16 收藏 50KB PDF 举报
"Python核心编程第二版的习题答案,主要涉及字典操作和键的使用规则。" 在Python编程中,字典是一种非常重要的数据结构,它提供了键值对的存储方式。在本习题中,有两个关键知识点被提及: 1. **字典的合并**: - `dict.update(dict2)` 是用于合并两个字典的方法。它将`dict2`中的所有键值对添加到`dict`中。如果`dict`中已经存在与`dict2`相同的键,则`dict2`的值会覆盖原有的值。 2. **字典的键**: - 字典的键必须是可哈希的,因为它们用于索引字典中的值。可哈希性意味着这些对象在内存中的位置是固定的,这使得字典可以快速查找键对应的值。 - 可哈希的对象包括但不限于整数、浮点数(尽管数值相等的整数和浮点数被视为同一键)、字符串和元组(只要元组内的元素也是可哈希的)。 - 不可哈希的对象,如列表、字典、集合等,不能作为字典的键,因为它们的内容可以改变,从而导致哈希值变化。 - 内置的`hash()`函数可以用来检查一个对象是否可哈希。尝试将不可哈希的对象传递给`hash()`函数会导致`TypeError`。 例如,尝试将不可哈希类型如列表、字典和集合作为键会抛出错误: ```python >>> hash([1,2]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' ``` ```python >>> hash({1:2,}) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'dict' ``` ```python >>> hash(set('abc')) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set' ``` 然而,可哈希的类型如元组、字符串和冻结集合(frozenset)是可以作为键使用的: ```python >>> hash(('abc')) -1600925533 >>> hash(1.0) 1 >>> hash(frozenset('abc')) -114069471 ``` 冻结集合(frozenset)是集合的一个不可变版本,因此它可以被用作字典的键。 理解这些概念对于有效地使用Python字典至关重要,因为字典的性能在很大程度上取决于键的哈希能力。在实际编程中,我们通常选择不可变对象作为字典键以确保数据的一致性和效率。