字典定义与使用
- 字典是无序的键值对集合
- 字典用大括号{}包围
- 每个键/值对之间用一个逗号分隔
- 各个键与值之间用一个冒号分隔
- 字典是动态的
字典使用:创建
- 使用大括号填充键值对
-
sqr = {'name':'shaoqiran','gender':'male','age':'25'} print(sqr,type(sqr)) 运行结果是: {'name': 'shaoqiran', 'gender': 'male', 'age': '25'} <class 'dict'>
-
- 通过构造方法dict()
-
sqr1 = dict([('name','shaoqiran'),('gender','male'),('age',25)]) print(sqr,type(sqr1)) 运行结果是: {'name': 'shaoqiran', 'gender': 'male', 'age': '25'} <class 'dict'>
-
- 通过字典推导式
-
sqr2 = {k:v for k,v in [('name','shaoqiran'),('gender','male'),('age',25)]} 运行结果是:{'name': 'shaoqiran', 'gender': 'male', 'age': '25'} <class 'dict'>
-
字典使用:访问元素
print('访问键存在的集合',sqr['name'])#选择要访问的对象的键
print('访问键不存在的集合',sqr['happy'])
运行结果是:
访问键存在的集合 shaoqiran
Traceback (most recent call last):
File "E:\pythonProject\main.py", line 112, in <module>
print('访问键不存在的集合',sqr['happy'])
~~~^^^^^^^^^
KeyError: 'happy'
字典使用:操作元素
- 语法:dict[key] = value
- 添加元素
- 键不存在
- 修改元素
- 键已存在
sqr2 = {k:v for k,v in [('name','shaoqiran'),('gender','male'),('age',25)]}
sqr2['degree'] = 'daxue'
print('增加一个学位:',sqr2['degree'])
sqr2['degree'] = 'yanjiusheng'
print('修改一个学位:',sqr2['degree'])
字典使用:嵌套字典
- 嵌套字典
- 字典的值可以是字典对象
sqr2['grade'] = {'math':80,'englist':90}
print(sqr2)
sqr2['grade']['math'] = 70
print('修改数学课的成绩为的字典为:',sqr2)
运行结果是:
{'name': 'shaoqiran', 'gender': 'male', 'age': 25, 'degree': 'yanjiusheng', 'grade': {'math': 80, 'englist': 90}}
修改数学课的成绩为的字典为: {'name': 'shaoqiran', 'gender': 'male', 'age': 25, 'degree': 'yanjiusheng', 'grade': {'math': 70, 'englist': 90}}
字典常用方法
- keys()//获取所有的键
print(sqr2.keys())
运行结果是:dict_keys(['name', 'gender', 'age', 'degree', 'grade'])
- values()//获取所有的值
print(sqr2.values())
运行结果是个:dict_values(['shaoqiran', 'male', 25, 'yanjiusheng', {'math': 70, 'englist': 90}])
- items()//获取所有的键值对
print(sqr2.items())
运行结果是:dict_items([('name', 'shaoqiran'), ('gender', 'male'), ('age', 25), ('degree', 'yanjiusheng'), ('grade', {'math': 70, 'englist': 90})])
- get()//获取某个键的值
- 获取到指定key关联的value的值
- 入参
- key:字典的键,必传
- 返回
- 如果key存在于字典中,返回key关联的value值
- 如果key不存在,则返回None
- tips:此方法的好处就是无需担心key是都存在,永远都不会引发KeyError错误
-
print(sqr2.get('grade')) print(sqr2.get('school')) 运行结果是: {'math': 70, 'englist': 90} None
- update()//更新字典
- update(dict)
- 使用来自dict的键/值对更新字典,覆盖原有的键和值
- 入参
- dc:字典对象,必穿
- 返回:None
sqr2.update({'name':'lmq'})
print(sqr2)
运行结果是:{'name': 'lmq', 'gender': 'male', 'age': 25, 'degree': 'yanjiusheng', 'grade': {'math': 70, 'englist': 90}}
data = {'age':20,'hobby':'girl'}
sqr2.update(data)
print(sqr2)
运行结果是:
{'name': 'lmq', 'gender': 'male', 'age': 20, 'degree': 'yanjiusheng', 'grade': {'math': 70, 'englist': 90}, 'hobby': 'girl'}
- pop()//用来删除某个键值对
- 删除指定key的键值对,并返回对应value
- 入参:
- key:必传
- 返回:
- 如果key存在于字典中,则将其移除并返回value值
- 如果key不存在于字典中,则会引发KeyError
-
sqr2.pop('age')//将age这个键值对删除 print(sqr2)
字典推导式
- 字典推导式:可以从任意以键值对作为元素的可迭代对象中构建字典
实例
给定一个字典对象{‘a’:1,'b':2,'c':3},找出其中所有大于1的键值对,同时value值进行平方运算
dic1 = {'a':1,'b':2,'c':3}
dic2 = {k : v ** 2for k,v in dic1.items() if v > 1}
print(dic2)
运行结果是
{'b': 4, 'c': 9}