2020_9_28_元组和字典

元组

是不可变的列表,支持查,不支持增删改,元组有序所以支持下标操作
元组是容器型数据类型 - (元素1,元素2…)

一个元素的元组:(元素,)

省略括号
在没有歧义的情况下,可省略(),直接将多个元素用逗号隔开来表示一个元组

变量1,变量2… = 元组
变量个数和元组元素个数保持一致,获取元组所有元素的值

同时用多个变量获取元组元素的时候,变量个数可以比元组中元素个数少,但必须有且只有一个变量前有*

字典(dict)

是容器型数据类型,将{}作为容器的标志,里面多个元素用逗号隔开(元素必须键对) - {键1:值1, 键2:值2…}
字典可变,支持增删改
字典无序,不支持下标操作
元素:必须是键值对
键:必须是不可变的数据(数字、字符串、元组,不能用列表等可变数据),一般使用字符串;键是用来对值进行描述和区分的唯一的
值:没有要求
键是唯一的

字典的增删查改
查 - 字典[key] or 字典.get(key)
字典.get(key,默认值)

for 变量 in 字典:
循环体
变量获取的是字典中的键

增、改:
字典[key] = 值 看key是否存在决定增还是改


del 字典[key]
字典.pop(key)

字典的应用

练习:定义一个变量保存一个班级的信息,班级信息主要包含:班级名称、位置、容量、班主任、讲师、所有学生
班主任:姓名、性别、年龄、电话、QQ
讲师:姓名、性别、年龄、电话、QQ、级别
所有学生:多个学生,每个学生包含:姓名、性别、年龄、学历、专业、电话

class1 = {
    
    
    'name': 'python2004',
    'location': '9教室',
    'capacity': 50,
    'class_teacher': {
    
    
        'name': '张老师',
        'gender': '女',
        'age': 30,
        'tel': '110',
        'qq': '7282233'
    },
    'teacher': {
    
    
        'name': '骆昊',
        'gender': '男',
        'age': 35,
        'tel': '172623283',
        'qq': '2828332',
        'rank': '特级讲师'
    },
    'students': [
        {
    
    'name': '小明', 'gender': '男', 'age': 19},
        {
    
    'name': '小花', 'gender': '女', 'age': 18},
        {
    
    'name': '张三', 'gender': '男', 'age': 23},
        {
    
    'name': 'Tom', 'gender': '男', 'age': 22},
        {
    
    'name': 'Bob', 'gender': '男', 'age': 30}
    ]
}
print(class1['teacher']['name'], class1['teacher']['rank'])  #查询教师名字和等级
sum1 = 0
for x in class1['students']:
    sum1 += x['age']  #遍历学生年纪并加和
print(sum1 / len(class1['students']))  #求学生年纪的平均值

字典相关操作

字典不支持加法、乘法运算和比较大小

字典支持:
1.in 和 not in - 判断键
2.len
3.dict - 数据要求:a.数据本身是序列;b.序列中的每个元素必须是长度为2的小序列;c.小序列中的第一个元素不可变。
4.list(字典) - 字典key作为元素

字典相关方法:
1.字典.clear(),比= {}效率高
2.字典.copy()
3.dict.fromkeys(序列,值) - 默认值为None,键是序列
4.字典.keys()
5.字典.values()
6.字典.items()
7.字典.setdefault(键,值)-只添加不修改
8.字典1.update(字典2) - 字典2不一定是字典,也可以是能转换成字典的序列

猜你喜欢

转载自blog.csdn.net/xdhmanan/article/details/108856817