Python 哈希表的基本操作及常用技巧

2023-04-11 00:00:00 操作 技巧 常用

哈希表是一种常见的数据结构,用于快速查找和插入数据。它可以将任意类型的键映射到值,使得在大多数情况下,查找和插入的平均时间复杂度都是O(1)。在Python中,哈希表被实现为字典(Dict)类型。

以下是哈希表的基本操作:

  1. 创建一个空字典:使用字面量语法{}或者dict()函数。
d = {}   # 创建一个空的字典
d = dict()   # 创建一个空的字典
  1. 添加元素到字典:使用赋值运算符或者使用字典的update()方法来添加元素。
d = {}
d['pidancode'] = 1   # 将键为'pidancode',值为1的元素添加到字典d中
d.update({'python':2, 'java':3})   # 添加多个元素到字典d中
  1. 从字典中删除元素:使用del语句或者pop()方法来删除字典中的元素。
d = {'pidancode':1, 'python':2, 'java':3}
del d['java']   # 从字典d中删除键为'java'的元素
v = d.pop('python', None)   # 从字典d中删除键为'python'的元素,如果不存在则返回None
  1. 访问字典中的元素:使用键来访问字典中的元素。
d = {'pidancode':1, 'python':2, 'java':3}
v1 = d['pidancode']   # 返回键'pidancode'对应的值1
v2 = d.get('java')   # 返回键'java'对应的值3
  1. 遍历字典中的元素:使用for循环遍历字典中的元素。
d = {'pidancode':1, 'python':2, 'java':3}
for key in d:   # 遍历字典中的所有键
    value = d[key]   # 获取键对应的值
    print(key, value)

常用的哈希表技巧包括:

  1. 使用哈希表统计出现次数:字典可以用来统计元素的出现次数。例如,给定一个文本字符串,找出其中出现次数最多的单词。
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
  1. 使用哈希表找出两个数组的交集:字典可以用来记录第一个数组中出现的元素及其出现次数,然后遍历第二个数组,在字典中查找是否存在相同的元素。
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]
  1. 使用哈希表解决两数之和问题:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数的索引。
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
  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哈希表的基本操作及常用技巧。

相关文章