Python 中的字典提供了一种灵活的访问和组织数据的方式
- 字典是由很多值组成的集合
- 字典的索引可以是不同的数据类型,同样也不止是整数,也有字符串
- 字典的索引被称为“键”,键及键所关联的值叫键值对(类似于Java中的Map集合)
- 字典是另一种可变容器模型,且可存储任意类型对象。
- 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
dictionary = {
'url1':'baidu', 'url':'google', 'num1':12, 'num2':34};
键一般是唯一的,如果键重复,最后的一个键值对会替换前面的键值对,值没有唯一性要求,如下:
dic1 = {
'name':'zhangsan','age':23,'address':'BeiJing','name':'lisi'}
# 查看字典值发现重复的键值后面的替换前面的
dic1
{
'name': 'lisi', 'age': 23, 'address': 'BeiJing'}
dic1['name']
'lisi'
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组,如下:
dict = {
'Alice': '2341', 'Beth': '9102', 'Cecil': '3258',('a','b'):(12,43)}
1. 访问字典数据
创建一个字典,并访问数据字典内容,以下字典的键是‘size’,‘color’,‘character’,这些键对应的值是‘big’,‘white’,‘gentle’,访问字典的值通过方括号里面添加键就可以直接进行访问,例如:
MyDog = {
'size':'big','color':'white','character':'gentle'}
# 字典值通过[‘键’]来访问
print(MyDog['size'])
big #输出结果
print('My Dog has '+MyDog['color']+' fur.' + ' and it has a ' + MyDog['character']+' character')
My Dog has white fur. and it has a gentle character #输出结果
同样的,字典也可以用整数作为键,和列表的索引类似,只是字典的值是任何整数类型都行,不必要从0开始,因为键值的数据类型是任意的,如下:
MyCon = {
12:'big',0:'white',354:'gentle',1:'good'}
# 访问键为 12 的字典值
MyCon[12]
'big'
# 访问键为 0 的字典值
MyCon[0]
'white'
因为字典是不排序的,所以不能像列表那样切片。
如果访问字典中不存在的键,将导致 KeyError 出错信息。这很像列表的“越界”
IndexError 出错信息。在交互式环境中输入以下代码,并注意显示的出错信息,因
为没有’color’键:
dic1 = {
'name':'zhangsan','age':23,'address':'BeiJing'}
#找字典中键为 'color' 的值
dic1['color']
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 'color'
2、修改字典元素
2.1 添加和更新字典数据
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
dict = {
'Name': 'Fiona', 'Age': 10, 'Class': 'Three'}
# 更新
dict['Age'] = 8
# 添加
dict['School'] = "Middle School"
# 查看字典数据
dict
{
'Name': 'Fiona', 'Age': 8, 'Class': 'Three', 'School': 'Middle School'}
2.2 删除字典元素
对字典元素的删除操作能单一删除也能将整个字典清空,显示的删除一个字典使用 del 命令“
dict = {
'Name': 'Fiona', 'Age': 10, 'Class': 'Three'}
# 删除键是'Name'的条目
del dict['Name']
# 清空字典所有条目
dict.clear()