1. Python 字典基础概念
Python 字典是一种以键值对为元素的数据类型。它是用大括号 ({}) 包含一系列的键和对应的值,每个键值对之间用逗号(,)隔开。其中,键必须是不可变的(如字符串、数字、元组等),而值则可以是任意类型的数据。
下面演示一个简单的字典实例:
d = {'apple': 1, 'banana': 2, 'orange': 3}
print(d)
# {'apple': 1, 'banana': 2, 'orange': 3}
上述例子中,字典的三个键分别是 'apple'、'banana' 和 'orange',对应的值为 1、2 和 3。
1.1 创建字典
在 Python 中,我们可以通过以下两种方式来创建字典:
1.1.1 字面值语法
字面值语法是最常用的创建字典的方法。可以在 {} 中添加一个或多个键值对:
employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}
print(employees)
# {'John': 5000, 'Jack': 7000, 'Jill': 6500}
1.1.2 dict() 函数
我们可以通过将元组、列表或其他字典作为参数传递给 dict() 函数来创建字典:
person = dict(name='Alice', age=26, gender='female')
print(person)
# {'name': 'Alice', 'age': 26, 'gender': 'female'}
1.2 访问字典中的值
我们可以通过键来访问字典中的值。如果键不存在,则会抛出一个 KeyError 异常:
employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}
print(employees['Jack']) # 7000
print(employees['Sarah']) # KeyError: 'Sarah'
我们还可以使用 get() 方法来访问字典中的值:
employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}
print(employees.get('Jack')) # 7000
print(employees.get('Sarah')) # None
get() 方法还可以设置默认值。如果键不存在,则返回默认值而不是 None:
employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}
print(employees.get('Sarah', 'Not found'))
# Not found
1.3 修改字典
可以通过给特定键赋值来修改字典中的值:
employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}
employees['John'] = 5500
print(employees)
# {'John': 5500, 'Jack': 7000, 'Jill': 6500}
1.4 删除字典元素
可以使用 del 语句来删除字典中的元素(即键值对):
employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}
del employees['John']
print(employees)
# {'Jack': 7000, 'Jill': 6500}
我们还可以使用 pop() 方法来删除指定键的元素,并返回它的值。
employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}
salary = employees.pop('Jack')
print(salary) # 7000
print(employees)
# {'John': 5000, 'Jill': 6500}
1.5 字典常用操作
1.5.1 len() 函数
可以使用 len() 函数获取字典元素的个数:
employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}
print(len(employees)) # 3
1.5.2 in / not in 运算符
可以使用 in 和 not in 运算符检查字典中是否包含某个键:
employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}
print('John' in employees) # True
print('Sarah' not in employees) # True
1.5.3 keys() / values() / items() 方法
我们可以使用 keys()、values() 和 items() 方法返回一个字典的键、值或键值对:
employees = {'John': 5000, 'Jack': 7000, 'Jill': 6500}
print(employees.keys()) # dict_keys(['John', 'Jack', 'Jill'])
print(employees.values()) # dict_values([5000, 7000, 6500])
print(employees.items()) # dict_items([('John', 5000), ('Jack', 7000), ('Jill', 6500)])
2. Python 字典练习题
2.1 练习一:计算每个字符在字符串中出现的次数
编写一个函数,接受一个字符串作为参数,计算每个字符在字符串中出现的次数,并以字典的形式返回结果。例如,对于字符串 'hello',函数应该返回 {'h': 1, 'e': 1, 'l': 2, 'o': 1}。
代码如下:
def count_chars(s):
d = {}
for c in s:
if c in d:
d[c] += 1
else:
d[c] = 1
return d
测试代码:
s = 'hello'
print(count_chars(s)) # {'h': 1, 'e': 1, 'l': 2, 'o': 1}
2.2 练习二:获取字典中值最大的键
编写一个函数,接受一个字典作为参数,获取字典中值最大的键。
代码如下:
def get_max_key(d):
return max(d, key=d.get)
测试代码:
d = {'apple': 3, 'banana': 2, 'orange': 5, 'peach': 1}
print(get_max_key(d)) # 'orange'
2.3 练习三:合并两个字典
编写一个函数,接受两个字典作为参数,合并它们,并以字典的形式返回结果。
代码如下:
def merge_dicts(d1, d2):
return {**d1, **d2}
测试代码:
d1 = {'apple': 3, 'banana': 2}
d2 = {'orange': 5, 'peach': 1}
print(merge_dicts(d1, d2)) # {'apple': 3, 'banana': 2, 'orange': 5, 'peach': 1}
2.4 练习四:获取字典的子集
编写一个函数,接受一个字典和一组键作为参数,返回该字典中仅包含这些键的子集。
代码如下:
def get_subset(d, keys):
return {k: d[k] for k in keys if k in d}
测试代码:
d = {'apple': 3, 'banana': 2, 'orange': 5, 'peach': 1}
keys = ['apple', 'orange']
print(get_subset(d, keys)) # {'apple': 3, 'orange': 5}
2.5 练习五:以指定顺序遍历字典
编写一个函数,接受一个字典和一个键列表作为参数。函数按照键列表中指定的顺序遍历字典,并以键值对的形式返回结果。
代码如下:
def traverse_dict(d, keys):
return [(k, d[k]) for k in keys if k in d]
测试代码:
d = {'apple': 3, 'banana': 2, 'orange': 5, 'peach': 1}
keys = ['orange', 'apple']
print(traverse_dict(d, keys)) # [('orange', 5), ('apple', 3)]
以上就是 Python 字典的基本概念和常用操作,以及一些字典练习题的解答。熟练掌握字典的使用,可以更高效地处理各种数据。