1. 什么是字典
字典是Python中唯一内建的映射类型,由多个键(key)及其对应的值(value)所组成的一种数据类型。键可以是数字、字符串或者元组
2. 字典的结构与创建方法
- 在Python中,dict用代表字典,并且可以创建一个字典
- 在Python中,通过{} 将一个个key 与 value 存入字典中
a = dict()
a = {}
person = {'name': '小明', 'age': 18}
2.1 dict函数
通过其他映射(如其他字典)或键/值序列建立字典。
student = [('name', '小明'), ('number', '1001')]
detail = dict(student)
print('学生详细信息:', detail)
print('学生姓名:', detail['name'])
print('学生学号:', detail['number'])
dict 函数可以通过关键字参数创建字典
detail = dict(name='小红', number='1002')
print('学生详细信息:', detail)
2.2 字典的基本操作
2.2.1 修改字典
向字典添加新内容的方法是增加键值对,修改或删除已有键值对
students = {'小明': 1001, '小红': 1002, '小强': 1003}
students['小强'] = 1005
print(students)
students['小牛'] = 1006
print(students)
2.2.2 删除字段元素
显示删除字典原始,用del命令
students = {'小明': 1001, '小红': 1002, '小强': 1003, '小张': 1004}
del students['小张']
print(students)
# 删除整个字典
del students
2.2.3 字典键的特性
-
字典的键不允许重复
-
字典的键不可改变,可以使用数字、字符串或元组,不能使用列表
2.3 字典和列表的区别
dict的特点是:
- 查找和插入的速度极快,不会随着key的增加而变慢
- 需要占用大量内存,内存浪费多
list的特点是:
- 查找和插入时间锁着元素的增加而增加
- 占用空间小,浪费内存很少
2.4 字典方法
2.4.1 clear()
功能:
用于删除字典内所有内容
用法:
dict.cleat()
students = {'小明': 1001, '小红': 1002, '小强': 1003, '小张': 1004}
print('字段的元素个数为:%d 个' % len(students))
students.clear()
print('字段的元素个数为:%d 个' % len(students))
2.4.2 copy()
功能:
返回一个具有相同键值对的新字段。(该方法是浅拷贝)
用法:
dict.copy()
students = {'小明': 1001, '小红': 1002, '小强': 1003, '小张': 1004}
st = students.copy()
print('赋值后得到的st为:', st)
2.4.3 fromkeys()
功能:
用于创建一个新字典,以序列seq中的元素做字典的键,value为字典所有键对应的初始值
用法:
dict.fromkeys(seq[],value)
seq = ('name', 'age', 'sex')
info = dict.fromkeys(seq)
print('新字典为:%s' % info)
info = dict.fromkeys(seq, 10)
print('新字典为:%s' % info)
2.4.4 get()
功能:
返回指定键的值,如果值不在字典中,就返回默认值
用法:
dict.get(key,default=None)
students = {'小明': 1001, '小红': 1002, '小强': 1003, '小张': 1004}
print('小红的学号为:%s' % students.get('小红'))
2.4.5 items()
功能:
以列表返回可遍历的键值元组数组
用法:
dict.items()
students = {'小明': 1001, '小红': 1002, '小强': 1003, '小张': 1004}
print('调用items方法的结果: %s' % students.items())
# 调用items方法的结果: dict_items([('小明', 1001), ('小红', 1002), ('小强', 1003), ('小张', 1004)])
2.4.6 keys()
功能:
以列表返回一个字典所有键
用法:
dict.keys()
students = {'小明': 1001, '小红': 1002, '小强': 1003, '小张': 1004}
print('字段students所有键为:%s' % students.keys())
# 字段students所有键为:dict_keys(['小明', '小红', '小强', '小张'])
2.4.7 setdefault()
功能:
用于获得与给定键相关联的值。如果键不存在与字典中,就会添加键并将值设为默认值。
用法:
dict.setdefault()
students = {'小明': 1001, '小红': 1002, '小强': 1003, '小张': 1004}
print('小萌的键值为:%s' % students.setdefault('小萌'))
# 小萌的键值为:None
print('小明的键值为:%s' % students.setdefault('小明'))
# 小明的键值为:1001
# 默认值可以选择,如果不设定,就是用None
print('小黄的键值为:%s' % students.setdefault('小黄', 1005))
# 小黄的键值为:1005
2.4.8 update()
功能:
用于把字典的键值对更新到指定字典中
用法:
dict.update(dict2)
# 将dict2添加到字典dict中去
student1 = {'小明': 1001, '小红': 1002}
student2 = {'小强': 1003, '小张': 1004}
student1.update(student2)
print('student1新字典为: %s' % student1)
# student1新字典为: {'小明': 1001, '小红': 1002, '小强': 1003, '小张': 1004}
2.4.9 values()
功能:
以列表方式返回字典中所有值。
用法:
dict.values()
students = {'小明': 1001, '小红': 1002, '小强': 1003, '小张': 1004}
print('students字典所有值为: %s' % list(students.values()))
# students字典所有值为: [1001, 1002, 1003, 1004]