详解Python字典的运算
在Python中,字典(Dictionary)是一种非常常用的数据类型,它能够将一组键值对(Key-Value Pairs)进行存储,并通过键来访问相应的值。除了基本的访问操作,Python还提供了一系列丰富的字典运算,让我们能够更加灵活地操作字典数据。
创建字典
在Python中,可以使用花括号 {}
或者 dict()
构造函数来创建一个空的字典:
>>> my_dict1 = {}
>>> my_dict2 = dict()
>>> type(my_dict1), type(my_dict2)
(dict, dict)
可以在花括号内指定一些键值对来创建一个有内容的字典:
>>> my_dict = {'name': 'Alice', 'age': 18, 'gender': 'female'}
>>> my_dict
{'name': 'Alice', 'age': 18, 'gender': 'female'}
访问字典元素
可以使用方括号和键来访问字典中的元素:
>>> my_dict['name']
'Alice'
>>> my_dict['age']
18
如果访问不存在的键,会引发 KeyError
异常:
>>> my_dict['address']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'address'
为了避免这种异常,可以使用 get()
方法来访问字典中的元素:
>>> my_dict.get('name')
'Alice'
>>> my_dict.get('address', 'unknown')
'unknown'
当指定的键不存在时,默认返回 None
,但是也可以通过 get()
方法的第二个参数来指定默认值。
更新字典
可以使用赋值语句来更新字典中的元素:
>>> my_dict['age'] = 19
>>> my_dict
{'name': 'Alice', 'age': 19, 'gender': 'female'}
也可以使用 update()
方法将一个字典合并到另一个字典中:
>>> my_dict.update({'address': 'Beijing', 'age': 20})
>>> my_dict
{'name': 'Alice', 'age': 20, 'gender': 'female', 'address': 'Beijing'}
删除字典元素
可以使用 del
关键字或者 pop()
方法删除字典中的元素:
>>> del my_dict['gender']
>>> my_dict
{'name': 'Alice', 'age': 20, 'address': 'Beijing'}
>>> my_dict.pop('age')
20
>>> my_dict
{'name': 'Alice', 'address': 'Beijing'}
在使用 pop()
方法删除元素时,如果指定的键不存在,则会引发 KeyError
异常。可以通过指定 pop()
方法的第二个参数来避免这种异常:
>>> my_dict.pop('age', None)
>>> my_dict
{'name': 'Alice', 'address': 'Beijing'}
遍历字典
可以使用循环语句来遍历字典中的键、值或键值对:
# 遍历键
>>> for key in my_dict:
... print(key)
...
name
address
# 遍历值
>>> for value in my_dict.values():
... print(value)
...
Alice
Beijing
# 遍历键值对
>>> for key, value in my_dict.items():
... print(key, value)
...
name Alice
address Beijing
字典运算
除了基本的访问、更新、删除和遍历操作,Python字典还提供了许多有用的运算。
in
运算
可以使用 in
运算符来判断一个键是否存在于字典中:
>>> 'name' in my_dict
True
>>> 'age' in my_dict
False
len()
函数
可以使用 len()
函数来获取字典中键值对的数量:
>>> len(my_dict)
2
copy()
方法
可以使用 copy()
方法来复制一个字典:
>>> new_dict = my_dict.copy()
>>> new_dict
{'name': 'Alice', 'address': 'Beijing'}
clear()
方法
可以使用 clear()
方法来清空一个字典:
>>> my_dict.clear()
>>> my_dict
{}
update()
方法
之前已经介绍过 update()
方法可以将一个字典合并到另一个字典中,还可以使用它来批量添加元素:
>>> my_dict.update(name='Bob', age=30)
>>> my_dict
{'name': 'Bob', 'age': 30}
setdefault()
方法
可以使用 setdefault()
方法来获取指定键的值,如果该键不存在,则会添加该键值对到字典中:
>>> my_dict.setdefault('name', 'unknown')
'Bob'
>>> my_dict.setdefault('gender', 'unknown')
'unknown'
>>> my_dict
{'name': 'Bob', 'age': 30, 'gender': 'unknown'}
同时,如果该键已经存在,则不会更新该键的值。
popitem()
方法
可以使用 popitem()
方法随机弹出一个键值对,适合用于随机取出字典中的元素:
>>> my_dict.popitem()
('gender', 'unknown')
>>> my_dict
{'name': 'Bob', 'age': 30}
示例说明
示例1:将两个字典合并
dict1 = {'name': 'Alice', 'age': 18, 'gender': 'female'}
dict2 = {'address': 'Beijing', 'age': 20}
# 通过update()方法合并两个字典
dict1.update(dict2)
print(dict1)
# {'name': 'Alice', 'age': 20, 'gender': 'female', 'address': 'Beijing'}
在这个示例中,我们使用 update()
方法将两个字典合并为一个,并且由于两个字典中都有一个 age
键,后一个字典中的值会覆盖前一个字典中的值。
示例2:统计字符串中字符出现的次数
word = 'hello world'
char_count = {}
# 遍历字符串,统计字符数量
for char in word:
char_count.setdefault(char, 0) # 判断字符是否已经在字典中了
char_count[char] += 1 # 如果存在,数量加一,否则默认为一
print(char_count)
# {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}
在这个示例中,我们遍历字符串 word
中的每一个字符,然后使用 setdefault()
方法来判断字符是否已经在字典 char_count
中了,如果不存在,则添加该键值对并将数量设置为一,否则将数量加一。最终得到了一个记录了每个字符出现次数的字典。