1. Python字典简介
Python中的字典(Dictionary)是一种无序的、可变的、按照键(Key)访问的数据结构,它由键值对(Key-Value Pair)构成。Python字典的特点:
字典中的Key是唯一的,不能重复。
Key必须是不可变的对象,比如字符串、数字或元组等。
字典中的Value可以是任意类型的对象,包括列表、字典等。
Python字典可以用大括号{}或者dict()函数来创建。
1.1 使用大括号创建字典
可以使用大括号来创建一个空的字典,也可以在大括号中添加键值对来创建一个非空的字典。
# 创建空字典
dict1 = {}
# 创建非空字典
dict2 = {'name': 'Tom', 'age': 18}
创建空字典时,可以使用dict()构造函数来创建。例如:
dict3 = dict()
1.2 访问字典中的值
Python字典中的数据是以键值对的形式存在的,可以通过键来访问字典中的值。
# 访问字典中的值
print(dict2['name']) # 输出 Tom
# 使用get()方法访问字典中的值
print(dict2.get('age')) # 输出 18
如果访问字典中不存在的Key,程序会报KeyError错误。使用get()方法时,如果访问字典中不存在的Key,程序不会报错,而是返回None或者指定的默认值。
1.3 更新字典
可以通过赋值语句来更新字典中的键值对,也可以使用update()方法将一个字典中的键值对更新到另一个字典中。
# 更新字典中的键值对
dict2['name'] = 'John'
print(dict2) # 输出 {'name': 'John', 'age': 18}
# 使用update()方法更新字典中的键值对
dict2.update({'name': 'Lily', 'gender': 'female'})
print(dict2) # 输出 {'name': 'Lily', 'age': 18, 'gender': 'female'}
如果更新时添加了一个不存在的键值对,字典中会自动添加该键值对。如果更新时修改了一个已存在的键值对,字典中的原键值对将被替换为新键值对。
1.4 字典的遍历
可以使用for循环来遍历字典中的键值对,也可以分别遍历字典中的键和值。
# 遍历字典中的键值对
for key, value in dict2.items():
print(key, value)
# 遍历字典中的键
for key in dict2.keys():
print(key)
# 遍历字典中的值
for value in dict2.values():
print(value)
2. Python字典实例
2.1 统计字符串中每个字符出现的次数
下面是一个例子,统计字符串中每个字符出现的次数。
str1 = 'hello, world!'
count = {}
for char in str1:
if char in count:
count[char] += 1
else:
count[char] = 1
print(count)
运行结果如下:
{'h': 1, 'e': 1, 'l': 3, 'o': 2, ',': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1}
2.2 将两个列表转换成一个字典
下面是一个例子,将两个列表中的元素一一对应,转换成一个字典。
keys = ['name', 'age', 'gender']
values = ['Tom', '18', 'male']
dict4 = dict(zip(keys, values))
print(dict4)
运行结果如下:
{'name': 'Tom', 'age': '18', 'gender': 'male'}
2.3 判断字符串中的字符是否唯一
下面是一个例子,判断字符串中的字符是否唯一。
def is_unique(s):
count = {}
for char in s:
if char in count:
return False
else:
count[char] = 1
return True
str2 = 'abcdefg'
str3 = 'hello'
print(is_unique(str2)) # 输出 True
print(is_unique(str3)) # 输出 False
运行结果如下:
True
False
2.4 集合求交、并、差
可以使用Python字典来实现集合求交、并、差等操作。
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
# 求交集
intersection = {}
for element in set1:
if element in set2:
intersection[element] = True
print(intersection.keys())
# 求并集
union = {}
for element in set1:
union[element] = True
for element in set2:
union[element] = True
print(union.keys())
# 求差集
diff1 = {}
for element in set1:
if element not in set2:
diff1[element] = True
print(diff1.keys())
diff2 = {}
for element in set2:
if element not in set1:
diff2[element] = True
print(diff2.keys())
运行结果如下:
dict_keys([3, 4, 5])
dict_keys([1, 2, 3, 4, 5, 6, 7])
dict_keys([1, 2])
dict_keys([6, 7])
3. 小结
Python字典是一种非常有用的数据结构,它可以用于统计、映射、索引等操作。Python字典的特点是无序、可变,能够快速地根据键(Key)查找对应的值(Value)。在使用Python字典时,需要注意字典中的Key必须是不可变的对象。