1.字典的定义
- python内置的数据结构之一,与列表一样是一个可变序列(数据结构可以实现增删改的变化)。
- 字典是一个无序的数据集合,使用print输出字典时,通常输出的顺序和定义的顺序不一致。
- 字典以键值对的方式存储数据,
字典是一个无序的序列,而列表是一个有序序列。
列表: 单身贵族
字典: 二人世界(冒号之前为键,后为值。)
定义方法:
排序方法:无序
2、字典的实现原理
python中利用hash 函数对key查找value所在位置。
3、字典的创建
(1)使用花括号创建
字典名={ ’key1’:value1,‘key2’:value2}
dic1 = {'name':'kongying','age':18,'grade':23}
print(type(dic1))
运行结果:
####空字典的创建
dic1 = {}
print(dic1)
print(type(dic1))
运行结果:
(2)使用内置函数dict
source = dict(name='kongying',age=18,grade='65')
print(source,type(source))
运行结果:
4、字典元素的增删改查
(1)利用key值查找
source = dict(name='kongying',age=18,grade='65')
print(source['name'])
运行结果:
(2)利用get查找
source = dict(name='kongying',age=18,grade='65')
print(source.get('grade'))
运行结果:
两者区别:
若一个键不存在,第一个获取值的方法会报错,而第二个会显示None:
source = dict(name='kongying',age=18,grade='65')
print(source.get('grade'))
print(source.get('class'))
运行结果:
source = dict(name='kongying',age=18,grade='65')
print(source.get('grade'))
print(source['class'])
运行结果:
(3)利用in、not in判断key是否存在
source = dict(name='kongying',age=18,grade='65')
print('name' not in source)
运行结果:
(4)删除指定的键值对:del
source = dict(name='kongying',age=18,grade='65')
del source['grade']
print(source)
运行结果:
(5)清空字典的键值对:clear
source = dict(name='kongying',age=18,grade='65')
source.clear()
print(source)
运行结果:
(6)字典键值对的新增、修改
###新增
source = dict(name='kongying',age=18,grade='65')
source['class']='guangdian'
print(source)
运行结果:
##修改
source = dict(name='kongying',age=18,grade='65')
source['grade']=99
print(source)
运行结果:
(7)获取字典视图(其实都是一组组的元组)
- 获取字典的所有键:keys
source = dict(name='kongying',age=18,grade='65')
a = source.keys()
print(a,type(a))
运行结果:
- 获取字典的所有:values
source = dict(name='kongying',age=18,grade='65')
a = source.values()
print(a,type(a))
运行结果:
- 获取字典的所有对:items
source = dict(name='kongying',age=18,grade='65')
a = source.items()
print(a,type(a))
运行结果:
(8)字典元素(key-value对)的遍历
- 字典key的遍历
sources = {'name':'kongying','gae':'18','grade':99}
for item in sources:
print(item)
运行结果:
- 字典value的遍历
第一种方法:
###3利用键值对之间的一一对应关系遍历
sources = {'name':'kongying','gae':'18','grade':99}
for item in sources:
print(sources[item])
运行结果:
第二种方法:
##利用get 函数获取
sources = {'name':'kongying','gae':'18','grade':99}
for item in sources:
print(sources.get(item))
运行结果:
5、字典的特点
- 因为字典中的元素是无序的,所以没有办法进行指定位置的增加。
- 可以增删改除的数据结构即为可变序列,所以不需要给它定义静态存储位置大小。
6、字典生成式:内置函数zip()
(1)可迭代对象:可使用for in循环遍历的对象即为可迭代对象。
(2)利用内置函数生成字典:
name = ['liming','jerry','alica','apache']
age = [13,15,78,13]
a = {key:value for key,value in zip(name,age)}
print(a)
运行结果:
当两个定义的列表元素不相同的时候,根据元素最少的列表来生成字典:
name = ['liming','jerry','alica','apache','fjs','hhy']
age = [13,15,78,13]
a = {key:value for key,value in zip(name,age)}
print(a)
运行结果:
实操:.将两个列表转换为一个字典类型
第一种:
users = ['user1', 'user2']
passwd = ['123', '456']
a = {userx:passwdx for userx,passwdx in zip(users,passwd)}
print(a)
第二种:
users = ['user1', 'user2']
passwd = ['123', '456']
print(dict(zip(users,passwd))) ##zip表示重组,将原来数据类型打破,然后再强制更改为字典类型