天天看点

day8学习笔记(元组和字典)元组和字典

元组和字典

元组

1. 元组tuple就是不可变的列表 - 不支持增删改

元组是容器型数据类型,将()作为容器的标志,元素之间逗号隔开:(元素1, 元素2,元素3,…)

元组是有序的(支持下标操作)

1)空元组

tuple1 = ()
print(type(tuple1))
           

2)单个元素的元组

list1 = [10]  # 单个元素列表
tuple2 = (10,)
           

3)多个元素的元组

a. 变量 = (元素1, 元素2, 元素3,…)

b. 变量 = 元素1, 元素2,元素3,…

2. 获取元组中的元素

1)元组支持列表获取元素的方法

a. 获取单个元素 - 元组[下标]

b. 切片 - 元组[开始下标:结束下标:步长]

c. 遍历 - for 变量 in 元组: / for 下标 in range(len(元组)):

2)其他方式(同样适用于列表)

a. 变量1,变量2,变量3,… = 元组 (变量个数与元组元素保持一致)

tuple3 = 10, 20, 30
x, y, z = tuple3
           

b. 变量1,变量2,变量3,… = 元组 (变量个数小于元组元素个数,并且有且只有一个变量前有*

a, b, *c, d, e = 1, 2, 3, 4, 5, 6, 7, 8, 9
print(a, b, c, d, e)
print(type(c))
print(*c)
           

补充:*打包\解包功能

3.列表相关操作全部适用于元组

字典基础

1. 字典(dict) - 同时保存多个数据,且数据意义不同

#字典是容器型数据类型,将{}作为容器标志,多个元素之间逗号隔开(字典元素是键值对):{键1:值1,键2:值2}

字典是可变的,无序的(不支持下标操作)

字典中元素:键值对

键 - 不可变、唯一性(一般是字符串)

值 - 任何类型的数据,可重复

字典保存的是值,键是对值进行区分和区别

空字典

2. 获取字典的值

1)获取单个元素的值

a. 字典[key] - 获取字典中指定key对应的值(如果不存在,报错)

b. 字典.get(key) - 获取字典中指定key对应的值(如果不存在,返回None)

c. 字典.get(key, 默认值) - key不存在,返回默认值

2)遍历

a. 掌握和使用的遍历方法(效率最高)

for 变量 in 字典:

循环体

注意:遍历字典中所有key

dict1 = {123: 45, '456': 78, '789': 90}
for x in dict1:
    print(x, dict1[x])
           

b. 其他两种情况

for 变量 in 字典.values():

循环体

注意:遍历字典中所有值(效率低)

c. 其他两种情况

for 变量1, 变量2 in 字典.items():

循环体

for x, y in dict1.items():
    print(x, y)
           

应用

students = [{'name': '姓名1', 'age': 23, 'telephone': '13756784455', 'score': 89},
            {'name': '姓名2', 'age': 17, 'telephone': '13758888455', 'score': 98},
            {'name': '姓名3', 'age': 18, 'telephone': '13711114455', 'score': 76},
            {'name': '姓名4', 'age': 16, 'telephone': '13756789999', 'score': 66}]
count = 0
for stu in students:
    if stu['age'] < 18:
        count += 1
print(count)
           

字典元素的增删改

1. 增/改

语法1:字典[key] = 值

说明:key存在(改),修改制定key对应的值,key不存在(增),增加键值对’key:值’

语法2:字典.setdefault(键, 值) - 添加键值对(不存在修改功能)

2. 删

1)del

del 字典[key] - 删除指定key对应键值对(key不存在,报错)

2)pop

字典.pop(key) - 取出字典中指定key对应的值,并且返回被取出的值

字典相关操作和方法

1.字典相关操作

字典不支持加法和乘法运算

1)比较运算

字典只支持比较相等,不支持比较大小

2)in 和 not in

key in 字典 - 判断字典中是否存在指定的key

key not in 字典 - 判断字典中是否不存在指定的key

3)相关函数

a. len(字典) - 统计键值对个数

b. dict(数据) - 将数据转换为字典

数据要求:1.容器型数据 2.数据元素中有且只有两个元素 3.数据元素中第一个元素是不可变的

c.字典转换成其他数据类型

bool(字典) - 空字典转换为False,其他为True

list(字典) - 将字典的key作为列表的元素

tuple(字典) - 将字典的key作为元组的元素

2.相关方法

1)字典.clear() - 清空字典

2)字典.copy() - 复制字典并产生新的字典

3)dict.fromkeys()

dict.fromkeys(序列) - 创建新字典,key是序列中元素,值为None

dict.fromkeys(序列, 值) - 创建新字典,key是序列中元素,值为指定值

4)item, keys, values

字典.keys() - 获取字典中所有key,返回一个容器(容器不是列表)

字典.values() - 获取字典中所有值,返回一个容器(容器不是列表)

字典.items() - 获取字典中所有键值对,返回一个容器,容器中元素是元组,每个元组对应一个键值对(容器不是列表)

5)字典.update(序列) - 用序列生成的字典更新原字典(存在修改,不存在添加)

集合

1.集合(set) - 容器型数据,将{}作为容器的标志,元素间逗号隔开:{元素1, 元素2, 元素3,…}

集合是可变的(支持增删改)、无序的

集合中元素不可变并且唯一,列表不能作为集合的元素

空集合

2.集合中元素的增删改查 - 集合无法修改元素

1)查

for 变量 in 集合:

循环体

2)增

a. 集合.add(元素) - 集合中添加元素

b. 集合.update(序列) - 序列中元素全部添加到集合

3)删

a. 集合.remove(元素) - 删除集合中元素(元素不存在报错)

b. 集合.discard(元素) - 删除集合中元素(元素不存在不报错)

3.数学集合运算

python中的集合支持数学集合运算:&(交集)、|(并集)、-(差集)、^(对称差集)、>/<(判断真子集)