一、字典基础知识
Python字典是一种无序的、可变的数据类型,在字典中,键(key)是唯一的,但值(value)则不需要唯一。Python字典是利用键(key)进行索引和查找的,使用键(key)对值(value)进行索引,因此Python字典是一种映射(Map)类型。下面是一个简单的Python字典示例:
my_dict = {'apple': 1, 'banana': 2, 'orange': 3}
print(my_dict['apple']) # 1
以上示例中,Python字典存储了3个键值对,其中键(key)为'apple', 'banana', 'orange',值(value)为1, 2, 3,通过键(key)对'apple'进行索引,可以获取相应的值(value)为1。
二、用字典实现数据存储
Python字典可以实现高效的数据存储,我们可以利用字典将数据存储成为键值对的形式。例如我们现在需要存储50个学生成绩,并根据学生姓名进行检索,可以使用以下代码实现:
# 创建一个空字典
score_dict = {}
# 添加学生成绩
score_dict['张三'] = 80
score_dict['李四'] = 90
score_dict['王五'] = 85
# 根据学生姓名进行检索
print(score_dict['张三']) # 80
print(score_dict['李四']) # 90
print(score_dict['王五']) # 85
以上代码中,我们利用Python字典实现了学生成绩的存储,并通过学生姓名进行检索。这种方式比使用列表或数组进行存储和查找更加高效方便。
三、用字典实现数据去重
在数据处理过程中,我们常常需要去重操作,而字典可以实现高效的数据去重。例如我们从一个文本文件中读取了100000个单词,现在需要将这100000个单词进行去重,可以使用以下代码实现:
# 读取文件内容
with open('words.txt') as f:
words = f.read().split()
# 用字典去重
unique_words = {}
for word in words:
unique_words[word] = 0
# 输出去重后的单词数量
print(len(unique_words))
以上代码中,我们利用字典unique_words对单词进行去重操作。通过遍历words中的单词,将单词作为键(key)添加到字典unique_words中,值(value)则设为0。由于Python字典是不能有重复的键(key),因此这种方式实现了高效的去重操作。
四、用字典实现统计
使用字典可以实现高效的统计操作。例如我们现在需要统计一个文本文件中各单词的出现次数,并按照出现次数排序输出,可以使用以下代码实现:
# 读取文件内容
with open('words.txt') as f:
words = f.read().split()
# 统计单词出现次数
word_counts = {}
for word in words:
if word not in word_counts:
word_counts[word] = 1
else:
word_counts[word] += 1
# 按照出现次数排序输出
sorted_word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)
for word, count in sorted_word_counts:
print('{}: {}'.format(word, count))
以上代码中,我们利用字典实现了对单词出现次数的统计。通过遍历words中的单词,将单词作为键(key)添加到字典word_counts中,并对应的值(value)设为1或增加1。最终我们将字典中的键值对使用sorted函数进行排序,并输出结果。
五、用字典实现缓存
使用字典可以实现缓存的操作,将一些经常被使用的数据存储在字典中,这样可以加快程序的执行速度。例如我们现在需要实现一个带有缓存功能的斐波那契数列函数,可以使用以下代码实现:
# 定义带缓存的斐波那契数列函数
fib_cache = {}
def fibonacci_with_cache(n):
if n in fib_cache:
return fib_cache[n]
if n < 2:
fib_cache[n] = n
return n
else:
result = fibonacci_with_cache(n-1) + fibonacci_with_cache(n-2)
fib_cache[n] = result
return result
# 使用带缓存的斐波那契数列函数
print(fibonacci_with_cache(50))
以上代码中,我们定义了一个带缓存的斐波那契数列函数fibonacci_with_cache,利用字典fib_cache存储已经计算过的斐波那契数列结果。当函数需要计算某个斐波那契数列时,首先在缓存字典fib_cache中查找是否已经计算过,如果已经计算过,则直接返回已经计算的结果,否则进行计算,并将计算结果存储到缓存字典fib_cache中。这种方式可以避免重复的计算,提高程序的执行效率。