================字典dic
字典存在的价值:可以在同时保存多个意义不同的数据时,通过key来对数据进行区分和说明
字典:
容器型数据类型;将{}作为容器的标志,里面的元素用逗号隔开
字典元素:必须是键值对
键,不可变数据类型,一般用字符串,且是唯一的
值:任何数据都可以,可重复,是字典真正保存的数据 (字典是可变的,支持增删改)
1)查 — 获取字典的值
字典[key] - 获取key对应的值,如果key不存在,会报错
字典.get(key) - 获取字典中指定key对应的值,如果值不存在,返回None
字典.get(key,默认值) - 获取字典中指定key对应的值,如果值不存在,返回默认值
2)遍历
for 变量 in 字典:
循环体
# 练习:
# 1)统计班级中不及格学生的人数
# 2)计算所有学生的平均分
classes = [
{
'name': '小明', 'age': 26, 'score': 90, 'sex': '男'},
{
'name': 'sut1', 'age': 13, 'score': 89, 'sex': '女'},
{
'name': 'stu2', 'age': 22, 'score': 77, 'sex': '女'},
{
'name': 'stu3', 'age': 34, 'score': 56, 'sex': '男'},
{
'name': 'stu4', 'age': 15, 'score': 34, 'sex': '女'},
{
'name': 'stu5', 'age': 20, 'score': 70, 'sex': '女'}
]
n = 0
for x in classes:
if x.get('score') < 60:
n += 1
print(n)
n = 0
for x in classes:
n += x['score']
print(n / len(classes))
3)增/改 ----添加键值对/修改键对应的值
字典[key] = 值 - 如果key不存在,就是添加key:值 对应的键值对;如果key存在,就是修改指定key对应的值
2)字典.setdefault(key,value) - 添加键值对(只能添加,不能修改)
3.删 - 删除键值对
1)del 字典[key] - 删除指定key对应键值对 如果key值不存在,会报错
2)字典.pop(key) - 取出指定key对应的值,并且返回key对应的值
============字典相关操作
1.运算符
字典仅支持判断是否相等或不相等 ==或者!=
2.in与not in
key in 字典(判断字典中是否存在指定的key值)
key not in 字典 (判断字典中没有这个key的值)
3.相关函数
sum(求和)、max(最大值)、min(最小值)、sorted(从小到大排序)(都是针对key是数字的时候的操作,作用不大)
len(字典) - 获取键值的个数
- dict(数据) - 将指定数据转换成字典
- 要求:1)数据本身是序列 2)序列中的每个小元素都是小序列 3)小序列中元素的个数为2 4)小序列的第一个元素不可变
4.字典转换成列表 - 将字典中的key作为列表元素
-
字典.clear( ) - 清空字典
-
字典.copy( ) - 赋值一个一模一样的字典并返回
-
dict.fromkeys(序列,值) - 创建一样新的字典,将序列中的元素作为字典的key,key的值就是指定的值
-
字典.items( ) - 同时获取字典的key值和键值
d4 = {'a': 10, 'b': 20, 'c': 30}
list1 = dict([(value, key) for key, value in d4.items()])
print(list1) # {10: 'a', 20: 'b', 30: 'c'}
list2 = [(d4[key], key) for key in d4]
print(list2) # [(10, 'a'), (20, 'b'), (30, 'c')]
- 字典.keys() - 获取所有的key(返回一个序列)
- 字典.values() - 获取所有的值(返回一个序列)
- 字典.update(序列) - 将序列中所有的元素以键值对的形式添加到字典
- 序列:必须是必须是可以转换成字典的序列
============集合
集合set
容器:将{}作为容器的标志,多个元素用逗号隔开:{元素1,元素2,元素3}
元素:不可变且唯一,自带去重效果
可变的:无序的
1)空集合为set( )
2)集合不可变
3)集合的元素唯一
================================
数学集合运算:
并集(|)、交集(&)、差集(-)、对称查集(^)、子集(>=)、真子集(>)
1.并集
a = {1, 2, 3, 4, 5, 6}
b = {5, 6, 7, 8, 9}
print(a | b) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
2.交集
print(a & b) # {5, 6}
3.差集
print(a - b) # {8, 9, 7}
4.对称差集 - 在集合A和集合b中,只存在a中和只存在b中的集合
5.>=判断是否是子集,只要包含集合b就行
6.>判断是否是真子集