下面是关于Python 字典、映射和散列表的完整攻略。
Python 字典
Python 字典是一种无序、可变和可迭代的数据结构,用键和值来存储和检索元素。字典可以通过{}
或者dict()
函数创建。以下是字典的一些常用方法:
创建字典
# 直接创建字典
my_dict = {"key1": "value1", "key2": "value2"}
# 使用 dict() 函数创建字典
my_dict = dict(key1="value1", key2="value2")
获取值
# 访问单个值
my_dict = {"key1": "value1", "key2": "value2"}
val1 = my_dict["key1"] # 获取 key1 对应的值
val2 = my_dict.get("key2") # 获取 key2 对应的值
# 访问多个值
my_dict = {"key1": "value1", "key2": "value2", "key3": "value3"}
# 使用 keys() 方法获取字典所有的键
keys = my_dict.keys()
print(keys) # dict_keys(['key1', 'key2', 'key3'])
# 使用 values() 方法获取字典所有的值
values = my_dict.values()
print(values) # dict_values(['value1', 'value2', 'value3'])
# 使用 items() 方法获取字典所有的键值对
items = my_dict.items()
print(items) # dict_items([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')])
添加/修改键值对
my_dict = {"key1": "value1", "key2": "value2"}
# 添加键值对
my_dict["key3"] = "value3"
# 修改键值对
my_dict["key1"] = "new_value1"
删除键值对
my_dict = {"key1": "value1", "key2": "value2"}
# 使用 del 删除指定键值对
del my_dict["key1"]
# 使用 pop() 方法删除指定键值对并返回对应的值
val = my_dict.pop("key2")
Python 映射
Python 映射是一种基于“键值对”存储和检索数据的数据结构,即通过键(key)来访问对应的值(value)。Python 中的字典就是一种映射。
Python 散列表
Python 散列表是一种将键(key)映射到值(value)的数据结构,通过散列函数将键转换成哈希值,然后将哈希值与值一起存储在表中。在字典中,散列表被用来实现键的快速查找。
示例说明
示例一
# 统计单词出现的次数
def count_word(word_list):
word_count_dict = {}
for word in word_list:
if word in word_count_dict:
word_count_dict[word] += 1
else:
word_count_dict[word] = 1
return word_count_dict
word_list = ["apple", "banana", "apple", "cherry", "cherry", "cherry"]
word_count_dict = count_word(word_list)
print(word_count_dict) # {'apple': 2, 'banana': 1, 'cherry': 3}
上述代码使用字典和遍历实现了单词出现次数的统计,通过判断字典中的键是否存在,来决定是添加键值对还是改变已经存在的值。最终输出每个单词出现的次数。
示例二
# 判断一个字符串是否是另一个字符串的字母异位词
def is_anagram(str1, str2):
if sorted(str1) == sorted(str2):
return True
return False
str1 = "heart"
str2 = "earth"
if is_anagram(str1, str2):
print("是字母异位词")
else:
print("不是字母异位词")
上述代码使用字典实现了判断两个字符串是否是字母异位词。如果两个字符串的字符组成相同(忽略顺序),则认为它们是字母异位词。该算法通过将字符排序来比较字符串,运用字典实现字符和对应频次的计数。