⑥初识python--python的dict字典与set集合

python的字典与集合

一、字典的定义与访问

1、为什么需要字典

思考1:如果有多个数据,例如:'Tom','男',20,如何快速存储?

答:列表,元组

list1 = ['Tom','男',20]

思考2:如何查找到数据"Tom"?

答:查找到下标为0的数据即可。

list1[0]

思考3:如果将来顺序发生变化,如下所示,还能通过list1[0]访问到数据吗?

list1 = ['男',20,'Tom']

答:不能,数据'Tom'的此时下标为2

思考4,数据顺序发生变化,每个数据下标也会随之变化,如何保证数据顺序变化前后能使用同一标准查找数据呢?

答:字典,字典里面数据以键值对形式出现,字典数据顺序与数据顺序无关,即字典不支持下标,后期无论数据如何变化,只需要按照对应的键的名字查找数据即可。

字典类型:很适合用来保存一个事物的信息。如一个人的信息、一本书的信息、一个商品的信息。

一个人:性别,年龄,姓名

一个书:标题,价格,出版社

2、字典的定义与访问

基本语法:

字典名称 = {key1:Value1, key2:value2, key3:value3}

注:字典中没有索引下标,其通过key:value键值对来体现键(等价索引下标)与值的关系
key:必须唯一且没有顺序要求,可以是字符串类型、数值类型和元组类型(少)
value:代表元素中具体的值
# 1、定义一个空字典
dict1 = {}
dict2 = dict()

# 2、定义一个有数据的字典
dict3 = {'name': 'Tom', 'sex': '男', 'age': 20}

# 3、通过key的值来访问value的具体值
print(dict3)
print(dict3['name'])
print(dict3['age'])

3、常见问题答疑

  • 字典是不能进行切片操作的,不被允许,因为没有索引下标

  • 创建一个有数据的字典,只能通过{ } 创建,不能通过dict()创建

  • 无论是key或者value,如果是字符串类型则必须添加引号,数值类型,则不需要添加引号。

二、字典的相关操作

1、字典的新增与修改操作

基本语法:字典的新增与修改语法一样

字典名称[key] = value
  • 如果字典中没有这个key,则实现添加操作
  • 如果字典中已经有这个key,则实现修改操作
# 定义一个person的空字典
person = dict()

# 实现字典的新增操作
person['name'] = 'Tom'
person['age'] = 20
person['sex'] = '男'
print(person)

# 字典的修改
person['age'] = 21
print(person)

image-20230909214101653

2、字典的删除操作

基本语法:

del 字典名称[key]
  • 根据字典中的key ,删除满足条件的 key : value 键值对
# 定义一个有数据的字典
student1 = {'name': '莫航', 'age': 20, 'sex': 'male'}

# 删除student1中的age所对应的键值对
del student1['age']

print(student1)

image-20230909215652579

3、字典中的查操作

"""
① 获取字典中的某个元素,字典名称[key],代表访问指定的元素
② 字典也支持直接打印输出
③ 字典也支持for循环打印输出,但是注意,只有字典中key的值可以遍历出来(默认)

"""
student1 = {'name': 'Jack', 'age': 20, 'sex': 'male'}

# ① 通过字典中的key访问指定元素
print(student1['name'])

# ② 直接打印输出
print(student1)

# ③ for循环遍历字典中的key
for key in student1:
    print(key)

  • for循环默认遍历字典中的key

python字典中还提供keys()、values()、items()函数来获取字典的key,value以及键值对(key:value)

编号 函数 作用
1 keys() 以列表返回一个字典所有的键
2 values() 以列表返回一个字典所有的值
3 items() 以列表返回可遍历的(键,值)元组数组
  • 以上三个方法很少单独使用,通常配合for循环进行遍历操作
student1 = {'name': 'Jack', 'age': 20, 'sex': 'male'}
print(student1.keys())
print(student1.values())
print(student1.items())

# 通过keys()方法遍历字典中的key
for key in student1.keys():
    print(key)
print()
# 通过values()方法遍历字典中的value
for value in student1.values():
    print(value)
print()

# 通过items()方法遍历字典中的键值对
for key, value in student1.items():
    print(f'{key}:{value}')

image-20230909224728418

4、字典与列表结合的小案例

① 列表适合同时保存多个数据;

② 字典适合保存一个事物的信息,如一本书,一个人或一件商品

③ 那么列表与字典的结合可以同时保存多个事物的信息:多本书,多个人,多件商品

学生信息管理系统的案例

students = []

student1 = {'name': 'Tom', 'age': 19, "sex": 'male'}
student2 = {'name': 'Harry', 'age': 18, "sex": 'female'}
students.append(student1)
students.append(student2)
# 相当于students = [student1, student2]
print(students)

# 比如现在要删除名字为{name}的学生信息
name = input('请您输入要删除的学生信息:')
for i in students:  # 遍历得到的i为一个个字典
    if i['name'] == name:
        students.remove(i)
        print(f'您已经成功删除{name}的学生信息!')
        print(students)
        break
else:
    print('对不起!没找到名字为%s的学生!' % name)

image-20230910100739193

三、集合(set)

1、什么是集合

集合(set)是一个无序不重复的数据集合。

  • 天生去重(自动返回一个不重复的序列)
  • 无序

2、集合的定义

在python中,我们可以使用{}或set()方法定义一个集合,如果你定义的集合是一个空集合,则只能使用set()方法,{}默认是空字典。

# 定义一个空集合
set1 = set()

print(type(set1))

# 定义一个有数据的集合
set2 = {10, 20, 20, 30, 40}
print(set2)  # 天生去重

# set()方法实现数据类型的转换
set3 = set('abcd')
print(set3)

image-20230910110323108

3、集合的访问

'''
集合类型是无序的,没有索引下标,有两种访问方式
① 直接打印
② 通过for循环进行遍历(不能使用while循环,因为没有索引下标)
'''
set2 = {10, 20, 30, 30}
print(set2)
for i in set2:
    print(i)

image-20230910110926511

四、集合的相关操作方法

1、增加方法

add():向集合中添加不重复的数据
# 定义一个空集合
set1 = set()

# 使用add()方法向集合中添加不重复的数据
set1.add(10)
set1.add(20)
set1.add(20)
print(set1)

image-20230910111925155

2、删除方法

remove():根据值删除指定元素
pop(): 随机删除集合中某个指定的元素,删除后,返回被删除的那个元素
set2 = {10, 20, 30, 40}

set2.remove(10)
print(set2)
print(set2.pop())  # 返回随机删除元素的值

image-20230910112612396

3、查询方法

if 元素 in set:返回bool类型(True or False
if 'Jack' in set3:
    print("'Jack' exist in the set3")
else:
    print("'Jack' not exist in the set3")
posted @   七落安歌  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示