字典
-
保存多个数据的时候,各个数据的意义不尽相同,可以用字典进行保存来对数据的意义进行说明
认识字典
-
容器型数据类型
-
格式 { key:value,key:value } 字典的元素只能是键值对 key: 不可变元素(数字,字符串,bool,字符串),key值唯一;value: 无要求
-
空字典 dict={ }
-
字典可以修改,字典是无序的
字典操作
-
查单个 dict[key] 获取字典中字典的值 dict.get(key,默认值) :当key值不存在时前者会报错,后者回返回默认值若默认值不存在则返回None
-
字典 列表嵌套
class1 = { 'name': '201', 'address': '12', 'lecturer': { 'name': 'a', 'gender': '女', 'tel': '136737345345381973853752302' }, 'class_teacher': { 'name': 'b', 'gender': '女', 'tel': '123410', 'age': 20, 'QQ': '6178182156271' }, 'students': [ {'name': '小明', 'gender': '男', 'age': 18, 'score': 100, 'education': '专科', 'linkman': {'name': '小吴', 'tel': '1143534537543754357375430'}}, {'name': '小花', 'gender': '女', 'age': 20, 'score': 98, 'education': '本科', 'linkman': {'name': '小张', 'tel': '1234537543754357375430'}}, {'name': '张三', 'gender': '男', 'age': 30, 'score': 90, 'education': '本科', 'linkman': {'name': '小赵', 'tel': '1134537543754357375439'}}, {'name': '李四', 'gender': '男', 'age': 22, 'score': 70, 'education': '专科', 'linkman': {'name': '小刘', 'tel': '1334537543754357375434'}}, {'name': '王二', 'gender': '男', 'age': 28, 'score': 95, 'education': '本科', 'linkman': {'name': '小徐', 'tel': '23345375437543573754383'}}, {'name': '赵敏', 'gender': '女', 'age': 27, 'score': 99, 'education': '专科', 'linkman': {'name': '小胡', 'tel': '233453754375435737543423'}}, {'name': '老王', 'gender': '男', 'age': 22, 'score': 89, 'education': '本科', 'linkman': {'name': '小王', 'tel': '12334537543754357375434'}} ] } # 1) 获取班级名字 print(class1.get('address')) # 2) 获取讲师的名字 print(class1.get('lecturer').get('name')) # 3) 获取班主任电话号码 print(class1.get('class_teacher').get('tel')) # 4) 统计学生中男生的数量 print(sum([1 for i in class1.get('students') if i.get('gender')=='男'])) # 5) 计算所有学生分数的平均分 print(round(sum([i.get('score') for i in class1.get('students')])/len([i.get('score') for i in class1.get('students')]),2)) # 6) 获取分数最高的学生的名字 maxs=max([i.get('score') for i in class1.get('students')]) print([i.get('name') for i in class1.get('students') if i.get('score')==maxs]) # 7) 获取所有紧急联系人的电话 print([i.get('linkman').get('tel') for i in class1.get('students')])
-
遍历
1. 遍历字典得到的是key值
2. for key,value in dict.items():
增删改
- 增改:dic[key]=值 如果键存在就修改,不存在就添加
- dict.setdefault(key,value) 添加元素 如果键存在,如果不存在就增加一个键值对
- dict.pop(键) del dict[键]
相关操作
-
运算符:字典不支持:+,-,*,<,>,>=,<= 只支持 ==,!=
-
in , not in 判断键值是否存在
相关函数
- len[dict] 求元素个数
- dict(数据) 将指定数据转换成字典
- 数据必须是一个序列
- 序列中的元素必须有且只有俩个元素的小序列,并且其中第一个元素是不可变的数据
相关方法
- dict.clear()
- dict.copy()
- dict.keys() 返回一个序列
- dict.values() 返回所有的值
- dict.items() 返回所有的键值对,输出dict_items([(key,value),(key,value)])
- dict.update() 将序列中的所有元素(元素必须可以转化成字典)添加到dict中
- 字典推导式: {键 :值 for i in 序列 } { 键 :值 for i in 序列 if }