一、字典的定义
(1)字典也是Python内置的数据结构之一,和列表一样都是可变序列,也就是说字典也能够进行增、删、改的操作。字典是以键值对的方式存储数据的,所以在字典中包含键和值。不同于数组,字典是一个无序的序列,也就是说第一个存入字典的元素,不一定是第一个输出的元素,字典中存储元素的位置,是根据hash函数计算得来的,字典中的键不可变,也就是说键不可以进行增、删、改操作。
(2)字典的实现原理
Python中的字典是根据key查找value所在的位置。
(3)字典的格式
字典名={key1:value1, key2:value2, key3:value3}
二、字典的创建
方式一:使用花括号
方式二:使用内置函数dict()
#使用花括号
scores={'一':377,'二':330,'三':357}
print(scores)
#使用内置函数dict
student=dict(name='jack',age=20)
print(student)
#创建一个空字典
d={}
print(d)
运行结果
三、字典元素的获取
方式一:使用方括号[],利用键获取值
#使用方括号获取字典中的元素
scores={'一':377,'二':330,'三':357}
print(scores['二'])
运行结果
如果没有所搜索的键,则会报错keyerror
#使用方括号获取字典中的元素
scores={'一':377,'二':330,'三':357}
print(scores['四'])
运行结果
方法二:使用get
#使用get
scores={'一':377,'二':330,'三':357}
print(scores.get('二'))
运行结果
如果没有所要搜索的键,则显示none
#使用get
scores={'一':377,'二':330,'三':357}
print(scores.get('四'))
运行结果
如果所查找的键不存在时,输出一个规定的值
#使用get
scores={'一':377,'二':330,'三':357}
#若所查找的键不存在时,输出一个规定的值
print(scores.get('四',325))
运行结果
四、字典中键是否存在的判断
有in和not in,返回结果是true和false。
#键存在的判断
scores={'一':377,'二':330,'三':357}
print('二' in scores)
print('二'not in scores)
print('四' in scores)
print('四'not in scores)
运行结果
五、字典元素的删除
(1)用del 删除指定的键值对
#键值对的删除
scores={'一':377,'二':330,'三':357}
del scores['一']
print(scores)
运行结果
(2)清空字典中的所有元素
#清空字典中的所有元素
scores={'一':377,'二':330,'三':357}
scores.clear()
print(scores)
运行结果
六、字典元素的新增
就是新增加键值对,一个键值对的增加
#字典中元素的添加
scores={'一':377,'二':330,'三':357}
print('初始字典',scores)
scores['四']=409
print('添加元素之后的字典',scores)
运行结果
增加多个键值对也可以采用下面一个办法
#字典中元素的添加
scores={'一':377,'二':330,'三':357}
print('初始字典',scores)
scores['四']=409
scores['五']=500
print('添加元素之后的字典',scores)
运行结果
七、字典元素的修改
由前面可知,字典中的键不可修改,但这里可以对字典中的值进行修改。
#字典中元素的修改
scores={'一':377,'二':330,'三':357}
print('初始字典',scores)
scores['三']=857
print('修改后的字典',scores)
运行结果
八、获取字典视图
获取字典视图,可以是获取字典中所有的key,value或者是所有的键值对。
#获取字典视图
scores={'一':377,'二':330,'三':357}
#获取所有的键
keys=scores.keys()
print(keys)
print(type(keys))
print(list(keys))#将keys转换为列表
#获取所有的值
values=scores.values()
print(values)
print(type(values))
print(list(values))#将values转换为列表
#获取所有的键值对
items=scores.items()
print(items)
print(type(items))
print(list(items))#转换之后是元组
运行结果
九、字典元素的遍历
scores={'一':377,'二':330,'三':357}
#字典元素的遍历
for item in scores:
print(item)
运行结果
输出的都是键,但是我们可以根据键去获取值
scores={'一':377,'二':330,'三':357}
#字典元素的遍历
for item in scores:
print(item,scores[item])
运行结果
或者用get的方法
scores={'一':377,'二':330,'三':357}
#字典元素的遍历
for item in scores:
print(item,scores.get(item))
运行结果
十、字典的特点
(1)键不可以重复,否则会出现值覆盖的情况
#键不可以重复,否则会出现值覆盖的情况
dic={'分数':857,'分数':587}
print(dic)
运行结果
(2)值可以重复
#值可以重复
dic={'分数':857,'成绩':857}
print(dic)
运行结果
(3)字典的元素是无序的,所以没法在指定位置上再插入一个键值对。
(4)字典中的键也还是不可变对象
(5)字典的内存空间是动态分配的
(6)字典会占有较大的内存
十一、字典生成式
{键:值 for 键,值 in zip(键,值)}
#字典生成式
names=['张三','李四','王二麻子']
scores=[98,99,97]
dic={names:scores for names,scores in zip(names,scores)}
print(dic)
运行结果