Python 哈希表的基本操作及常用技巧
哈希表是一种常见的数据结构,用于快速查找和插入数据。它可以将任意类型的键映射到值,使得在大多数情况下,查找和插入的平均时间复杂度都是O(1)。在Python中,哈希表被实现为字典(Dict)类型。
以下是哈希表的基本操作:
- 创建一个空字典:使用字面量语法{}或者dict()函数。
d = {} # 创建一个空的字典 d = dict() # 创建一个空的字典
- 添加元素到字典:使用赋值运算符或者使用字典的
update()
方法来添加元素。
d = {} d['pidancode'] = 1 # 将键为'pidancode',值为1的元素添加到字典d中 d.update({'python':2, 'java':3}) # 添加多个元素到字典d中
- 从字典中删除元素:使用
del
语句或者pop()
方法来删除字典中的元素。
d = {'pidancode':1, 'python':2, 'java':3} del d['java'] # 从字典d中删除键为'java'的元素 v = d.pop('python', None) # 从字典d中删除键为'python'的元素,如果不存在则返回None
- 访问字典中的元素:使用键来访问字典中的元素。
d = {'pidancode':1, 'python':2, 'java':3} v1 = d['pidancode'] # 返回键'pidancode'对应的值1 v2 = d.get('java') # 返回键'java'对应的值3
- 遍历字典中的元素:使用
for
循环遍历字典中的元素。
d = {'pidancode':1, 'python':2, 'java':3} for key in d: # 遍历字典中的所有键 value = d[key] # 获取键对应的值 print(key, value)
常用的哈希表技巧包括:
- 使用哈希表统计出现次数:字典可以用来统计元素的出现次数。例如,给定一个文本字符串,找出其中出现次数最多的单词。
text = 'This is a text text for testing text testing' words = text.split() count = {} for w in words: count[w] = count.get(w, 0) + 1 max_word = max(count, key=count.get) print(max_word, count[max_word]) # 输出:'text' 3
- 使用哈希表找出两个数组的交集:字典可以用来记录第一个数组中出现的元素及其出现次数,然后遍历第二个数组,在字典中查找是否存在相同的元素。
nums1 = [1, 2, 2, 1] nums2 = [2, 2] count = {} for n in nums1: count[n] = count.get(n, 0) + 1 res = [] for n in nums2: if n in count and count[n] > 0: res.append(n) count[n] -= 1 print(res) # 输出:[2, 2]
- 使用哈希表解决两数之和问题:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数的索引。
nums = [2, 7, 11, 15] target = 9 d = {} for i, n in enumerate(nums): if target - n in d: print(d[target-n], i) else: d[n] = i # 输出:0 1
- 使用哈希表解决环形数组问题:给定一个环形数组,找出循环节的长度。
nums = [2, -5, -2, -4, 3] d = {} fast = 0 for i, n in enumerate(nums): fast = (fast + n) % len(nums) if fast == 0: print(i+1) if fast in d: print(i - d[fast]) else: d[fast] = i # 输出:4
以上是Python哈希表的基本操作及常用技巧。
相关文章