文章目录
- 前言
- 一、字典的创建
- 1.使用花括号{}
- 2.使用dict()函数
- 3.使用fromkeys()方法
- 二、字典元素的访问
- 三、字典的元素的查询
- 1.查询所有元素items()方法
- 2.查询所有键keys()方法
- 3.查询所有值values()方法
- 4.查询键对应的值get()方法
- 5.查询键对应的值并适时添加键值对setdefault()方法
- 四、字典的其他操作
- 1.字典元素的添加
- 2.字典元素的修改
- 3.字典元素的删除
- (1)pop()方法
- (2)popitem()方法
- (3)clear()方法
- (4)del语句
- 4.字典的迭代
- (1)键和值
- (2)键
- (3)值
- 5.字典的推导式
- 6.判断键是否存在于字典
- 7.计算字典中键值对的个数
前言
字典是无序的映射集合,有不错的查找速度。字典的键必须唯一,值可以不唯一
。键必须是不可变类型以保证键唯一,如字符串、数字或元组,值可以是任何数据类型。在查找字典时,先查的是键,然后通过键可以直接知道对应的值,所以查找速度很高。字典是无序的,所以不具有列表的索引和切片访问的操作,但是有增删查改的操作。另外,从Python3.6开始,字典变成了有序。
一、字典的创建
1.使用花括号{}
字典的键和值之间使用冒号“:”连接,键与键之间使用逗号“,”连接。键可以重复
,对应的值会被覆盖。可以用花括号{}创建空字典,这与集合是不一样的。
语法格式:
{key1:value1,key2:value2,...}
{ 键1: 值1 , 键2: 值2,...}
举例:
d1 = {}#创建空字典
print(type(d1))
print(d1)
d2 = {'apple':3,'orange':5,'grape':10}
print(d2)
d3 = {'apple':3,'orange':5,'grape':10,'grape':50}#创建重复键的字典,前一个的值会被覆盖为后一个的值
print(d3)
运行结果如下:
2.使用dict()函数
字典的键和值之间使用等于号“=”连接,键与键之间使用逗号“,”连接。键不可以重复
,会报SyntaxError的异常。使用该函数,其中的键如果是字符串,不需要加上单引号,相当于对变量赋值。
语法格式:
dict(key1=value1,key2=value2,...)
dict( 键1= 值1 , 键2= 值2,...)
举例:
d1 = dict(apple=3,orange=5,grape=10)
print(d1)
d2 = dict(apple=3,orange=5,grape=10,grape=50)#创建重复键的字典,报错
print(d2)
运行结果如下:
3.使用fromkeys()方法
用于统一将传入字典的键对应的值设置为预置值或者None。
语法格式:
d1 = dict.fromkeys(iterable,value)
可迭代类型,预置值(默认为None)
举例:
d1 = dict.fromkeys(('tomato','potato'))#未设置value
print(d1)
d2 = dict.fromkeys(('tomato','potato'),10)#设置value
print(d2)
运行结果如下:
二、字典元素的访问
根据字典的键是唯一的特性,我们可以通过键直接获取其对应的值。如果该键不在字典中,则会报KeyError的异常。后面会讲到访问某一个不存在的键的值不会报错的方法。
d1 = dict(apple=3,orange=5,grape=10)
print(d1['apple'])#访问字典中存在的键的值
print(d1['banana'])#访问字典中不存在的键的值
运行结果如下:
三、字典的元素的查询
1.查询所有元素items()方法
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print(d1.items())#该对象支持迭代操作,可以遍历
运行结果如下:
2.查询所有键keys()方法
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print(d1.keys())#该对象支持迭代操作,可以遍历
运行结果如下:
3.查询所有值values()方法
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print(d1.values())#该对象支持迭代操作,可以遍历
运行结果如下:
4.查询键对应的值get()方法
语法格式:
dict.get(key[,default=None])
键,预置值
第一个参数是字典中要查找的键,第二个参数是预置值。当字典中存在该键,则返回其对应的值;当字典中不存在该键,则返回预先设置好的预置值,预置值缺省时表示空值None。
举例:
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print(d1.get('grape'))#字典中该键存在,返回对应的值
print(d1.get('banana'))#字典中该键不存在,返回空值
print(d1.get('banana',60))#字典中该键不存在,返回预置值
运行结果如下:
5.查询键对应的值并适时添加键值对setdefault()方法
语法格式:
dict.setdefault(key[,default=None])
键,预置值
第一个参数是字典中要查找的键,第二个参数是预置值。当字典中存在该键,则返回其对应的值;当字典中不存在该键,则以键值对形式将(key,default)添加到字典中,并且返回预先设置好的预置值,预置值缺省时表示空值None。
举例:
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print(d1.setdefault('apple'))#该键存在,返回对应值
print(d1.setdefault('banana'))#该键不存在,存入新键值对,预置值缺省,返回None
print(d1)
print(d1.setdefault('app',90))#该键不存在,存入新键值对,预置值已设置,返回预置值
print(d1)
运行结果如下:
四、字典的其他操作
1.字典元素的添加
我们可以通过update()方法或者键添加元素。
d1 = {'apple':1,'orange':5}
print(d1)
d1.update(grape = 10)#通过update()方法,键值对的形式添加元素
print(d1)
d1['strawberry'] = 20#通过键添加元素
print(d1)
运行结果如下:
2.字典元素的修改
我们可以通过update()方法或者键修改元素。修改字典元素就是对存在的键对应的值进行重新赋值。
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print(d1)
d1.update(grape = 30)#通过update()方法,键值对的形式修改元素
print(d1)
d1['strawberry'] = 40#通过键修改元素
print(d1)
运行结果如下:
3.字典元素的删除
(1)pop()方法
语法格式:
dict.pop(key[,default])
键,预置值
第一个参数是字典中要删除的键,第二个参数是预置值。当字典中存在该键,则返回其对应的值;当字典中不存在该键,则返回预先设置好的预置值;当预置值缺省且该键不存在,报KeyError的异常。
举例:
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print(d1)
a = d1.pop('grape')#删除存在的键,返回该键对应的值
print(a,d1)
b = d1.pop('banana',50)#删除不存在的键,返回预置值
print(b,d1)
c = d1.pop('banana')#删除不存在的键,预置值缺省,报错
print(c,d1)
运行结果如下:
(2)popitem()方法
用于随机
删除字典中的元素。
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print(d1)
d1.popitem()#随机删除字典元素
print(d1)
运行结果如下:
(3)clear()方法
用于清空
字典中的元素。
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print(d1)
d1.clear()#清空字典元素
print(d1)
运行结果如下:
(4)del语句
通过指定键来删除该键值对。del语句也可以删除整个字典对象。
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print(d1)
del d1['apple']#指定键来删除该键值对
print(d1)
运行结果如下:
4.字典的迭代
(1)键和值
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
for k,v in d1.items():#键和值分别输出
print(k,v)
for i in d1.items():#以键值对的形式输出
print(i)
运行结果如下:
(2)键
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
for k in d1.keys():
print(k)
运行结果如下:
(3)值
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
for v in d1.values():
print(v)
运行结果如下:
5.字典的推导式
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
d2 = {k:v for k,v in d1.items()}#字典推导式
print(d2)
l1 = [k + '=' + str(v) for k,v in d1.items()]#利用字典推导式将值传给列表
print(l1)
运行结果如下:
6.判断键是否存在于字典
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
#判断值时,可以直接使用字典名
print('orange' in d1.keys())#判断该键是否在字典中
print('orange' not in d1.keys())#判断该键是否不在字典中
print('orange' not in d1)#判断该键是否不在字典中
print(10 in d1.values())#判断该值是否在字典中
print(10 not in d1.values())#判断该值是否不在字典中
运行结果如下:
7.计算字典中键值对的个数
d1 = {'apple':1,'orange':5,'grape':10,'strawberry':20}
print('键值对个数为',len(d1))#计算键值对的个数
运行结果如下: