# 1.字典 存储数据 存储一个数据的属性 可以快速进行查找
# dict_data = {key:value,key:value,...}
# key是键
# value是值
# 以大括号表示
# 数据是以键值对出现的 键值对中间用冒号连接
# key的值必须是不可变类型
# 字典和列表和集合是可变类型
print('1.字典')
dict_data = {}  # 创建一个空的字典
print(dict_data)
print(type(dict_data))
dict_data = {'小明': [20, 186], '小芳': 18}
print(dict_data)
# 2.字典的操作 增删查改
print()
print('2.字典的操作,增删查改')
# 2.1 增加
# 字典是没有索引的
# 所以字典内是没有顺序的
# key是不能重复的
print()
print('2.1 增加')
dict_data = {'小明': [20, 186], '小芳': 18}
dict_data['小雨'] = 22  # 无指定的key则增加
print(dict_data)
# 2.2 修改
print()
print('2.2 修改')
dict_data['小芳'] = 66  # 有指定的key则修改
print(dict_data)
# 2.3 删除
print()
print('2.3 删除')
# del clear pop(key)

dict_data1 = {'小明': 20, '小芳': 18, '小刚': 16}
# del dict_data1  # 删除字典
# print(dict_data1)  # 会报错,显示变量dict_data1没定义
# del dict_data1['小明1']  # 删除字典中没有的数据会报错
# print(dict_data1)
del dict_data1['小明']  # 删除指定的数据
print(dict_data1)
dict_data1.clear()  # 清空字典
print(dict_data1)
dict_data1 = {'小明': 20, '小芳': 18, '小刚': 16}
print(dict_data1.pop('小明'))  # 返回被删除key所对应的value
print(dict_data1)
dict_data1 = {'小明': 20, '小芳': 18, '小刚': 16}
dict_data1.popitem()  # 默认删除最后一个
print(dict_data1)
# 2.4 查看
# key keys values items
print()
print('2.4 查看')
dict_data1 = {'小明': 20, '小芳': 18, '小刚': 16}
print(dict_data1['小芳'])  # key
print(dict_data1.get('小芳666'))  # 找到则返回value,没找到则返回None
print(dict_data1.setdefault('小李', 222))  # 找到则返回value,没找到则返回本行的222同时将数据加入到字典中
print(dict_data1)  # 输出可以看到加入了上一行的数据

dict_data1 = {'小明': 20, '小芳': 18, '小刚': 16}
print(dict_data1.keys())  # 返回字典中的所有key  返回的是一个序列
print(list(dict_data1.keys()))  # 强转为列表
print(tuple(dict_data1.keys()))  # 强转为元组

dict_data1 = {'小明': 20, '小芳': 18, '小刚': 16}
print(dict_data1.values())  # 返回字典中的所有value  返回的是一个序列
print(type(dict_data1.values()))
print(dict_data1.items())  # 返回字典中的key和value 返回的是序列
# 3.字典的遍历循环
print()
print('3.字典的便利循环')
dict_data1 = {'小明': 20, '小芳': 18, '小刚': 16}
for i in dict_data1.keys():  # 输出每一个key
    print(i)
print()
for i in dict_data1.values():  # 输出每一个values
    print(i)
print()
for i in dict_data1.items():
    print(i)  # 输出的是元组
    print(i[0], i[1])
print()
for key, value in dict_data1.items():  # 拆包写法
    print(key, value)
# 4.集合 set
# 没有索引 没有顺序 数据不能重复!
# {数据1,数据2,数据3... }
print()
print('4.集合')
set_data = {}  # 这是一个空的字典
print(type(set_data))
set_data = set()  # 创建一个空的集合
print(type(set_data))
set_data = {1, 2, 3, 4}
print(set_data)
print(type(set_data))
set_data1 = {1, 2, 3, 4, 6, 2, 1, 1, 3, }  # 集合可以去重复
print(set_data1)
# 5.集合的查找
# in
# not in
print()
print('5.集合的查找')
set_data = {1, 2, 3, 4}
print(1 in set_data)
print(2 not in set_data)
# 6.集合的增加
# add()
# update
print()
print('6.集合的增加')
set_data = {1, 2, 3, 4}
set_data.add(0)  # 添加的数据必须是一个不可变类型
set_data.add(1)  # 重复的不会加入
print(set_data)
set_data = {1, 2, 3, 4}
set_data.update([0, 1, 2, 3, 4, 5, 6])  # 拆开增加
print(set_data)
# 7.集合的删除
# remove
# discard
print()
print('7.集合的删除')
data = {200, 100, 300}
data.remove(200)  # 有这个数据就是删除,没有就报错
print(data)
data = {200, 100, 300}
data.discard(201)  # 有这个数据就删除,没有就跳过
print(data)
# 今日练习
'''
今天进行了数学考试,
本次考试中小明58分,小芳80分,小刚99分,小雨46分
(1)请用字典来表达此数据结构
(2)筛选出不及格的同学并且打印他的名称和份数
'''
print()
print('今日练习')
name_score = {'小明': 58, '小芳': 80, '小刚': 99, '小雨': 46}  # 使用字典存储学生姓名和成绩
for name, score in name_score.items():  # 拆包写法
    if score < 60:  # 如果成绩不及格
        print(name, score)  # 则打印名字和成绩

python中的字典和集合

python中的字典和集合

python中的字典和集合

python中的字典和集合

发表回复