字典
字典是Python
中的一种映射类型Mapping Type
,是一种无序的、可变的、可迭代的数据类型。它由一系列键-值对组成,其中每个键都是唯一的。与列表List
和元组Tuple
等序列类型不同,字典是通过键来访问值的,而不是通过索引。字典的基本特性包括:
- 无序性: 字典中的键-值对是无序的,即插入顺序和遍历顺序不一定相同。
- 可变性: 字典是可变的,可以通过增加、删除和修改键值对来改变字典的内容。
- 动态性: 字典的大小是可变的,可以根据需要动态增加或减少键值对。
基本操作
创建字典
Python中可以使用大括号 {}
来创建一个字典,在{}
内输入key:value
,每个键值对之间用逗号,
隔开:
>>> my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}
由于字典中键是唯一的,所以在用{}
直接创建字典时,如果key
重复了,那么它对应的value
会被最后一次输入的覆盖:
>>> new_dict = {'name': 'Alice', 'age': 30, 'city': 'New York', 'name': 'Chris', 'name': 'Eris'}
>>> print(new_dict)
{'name': 'Eris', 'age': 30, 'city': 'New York'}
访问字典中的值
可以使用键key
来访问字典中的值value
:
>>> print(my_dict['name'])
'Alice'
>>> print(my_dict['age'])
30
成员运算
可以使用 in
和 not in
运算符执行成员运算,检查键是否存在于字典中:
# 检查键是否存在
if 'name' in my_dict:
print('Name exists in the dictionary')
更新字典中的值
可以直接对指定的键赋新值来更新字典中的值:
>>> my_dict['name'] = 'Bob'
>>> my_dict['age'] += 1
>>> print(my_dict)
{'name': 'Bob', 'age': 31, 'city': 'New York'}
添加新的键值对
可以通过直接赋值来添加新的键值对:
>>> my_dict['gender'] = 'Male'
>>> print(my_dict)
{'name': 'Bob', 'age': 31, 'city': 'New York', 'gender': 'Male'}
删除指定的键值对
可以使用 del
关键字删除指定的键值对:
>>> del my_dict['age']
>>> print(my_dict)
{'name': 'Bob', 'city': 'New York', 'gender': 'Male'}
函数
名字 | 说明 |
---|---|
len | 有返回值,返回字典的长度,即键值对的个数 |
min | 有返回值,返回字典中最小的字符 |
max | 有返回值,返回字典中最大的字符 |
方法
获取字典中的键、值和键值对
名字 | 说明 |
---|---|
get | 根据键获取其对应的值 |
keys | 返回字典中所有键 |
values | 返回字典中所有值 |
items | 返回字典中所有键键对(key, value) |
get(key[, default])
get
方法可以通过传入的参数key
来获取在字典中它所对应的值,如果key
不存在则返回default
的值,若未给出default
则默认为None
。
>>> my_dict.get('name')
'Bob'
>>> my_dict.get('height', 170)
170
>>> my_dict.get('weight')
>>>
keys()/values()/items()
keys
、values
和items
三个方法没有参数,调用之后分别返回字典中所有的键、值和键值对:
>>> my_dict = {'name': 'Bob', 'city': 'New York', 'gender': 'Male'}
>>> keys = my_dict.keys()
>>> print(keys)
dict_keys(['name', 'city', 'gender'])
>>>
>>>
>>> values = my_dict.values()
>>> print(values)
dict_values(['Bob', 'New York', 'Male'])
>>>
>>>
>>> items = my_dict.items()
>>> print(items)
dict_items([('name', 'Bob'), ('city', 'New York'), ('gender', 'Male')])
通过观察上述三个方法的结束可以发现,它们都是可以迭代的对象,所以可以使用 for
循环遍历字典中的所有键、值和键值对:
# 遍历所有键
for key in my_dict:
print(key)
# 遍历所有值
for value in my_dict.values():
print(value)
# 遍历所有键值对
for key, value in my_dict.items():
print(key, value)
更新与删除
名字 | 说明 |
---|---|
update | 使用其它字典更新当前字典 |
pop | 根据键删除字典中的键值对 |
popitem | 根据值删除字典中的键值对 |
update(other)
调用update
之后,Python
用使用other
中的健值对更新当前字典。如果在other
中有当前字典中不存在的key
,则直接将这个健值对添加到当前字典中,否则用other
中的值更新当前字典中键所对应的值。
>>> new_dict = {'name': 'Jacky', 'height': 170, 'weight': 55}
>>> my_dict.update(new_dict)
>>> print(my_dict)
{'name': 'Jacky', 'city': 'New York', 'gender': 'Male', 'height': 170, 'weight': 55}
pop(key[, default])
调用pop
后,如果key
存在于字典中则将其移除并返回其值,否则返回default
。 如果default
未给出且key
不存在于字典中,则会报错:
>>> my_dict.pop('height')
170
>>> my_dict.pop('grade', 6)
6
>>> my_dict.pop('Address')
Traceback (most recent call last):
File "<pyshell#57>", line 1, in <module>
my_dict.pop('Address')
KeyError: 'Address'
>>>
>>>
>>> print(my_dict)
{'name': 'Jacky', 'city': 'New York', 'gender': 'Male', 'weight': 55}
popitem()
popitem
会以后进先出的方式将字典中的键值对弹出并返回:
>>> my_dict.popitem()
('weight', 55)
>>> print(my_dict)
{'name': 'Jacky', 'city': 'New York', 'gender': 'Male'}
复制与清空
名字 | 说明 |
---|---|
copy | 复制并返回字典浅复制的副本 |
clear | 清空字典中所有的键值对 |
copy()
可以使用 copy
方法或者使用字典的构造函数来复制字典:
>>> new_dict = my_dict.copy()
>>> print(new_dict)
{'name': 'Bob', 'city': 'New York', 'gender': 'Male'}
clear()
clear()
方法可以清空字典中的所有键值对,将它变成一个空字典:
>>> my_dict.clear()
>>> print(my_dict)
{}