数据类型
- 集合
- 字典
集合类型 set
定义集合
# 定义变量
a = {"a","b","c","a"}
print(type(a)) # <class 'set'>
集合的特征
集合数据类型有两个重要的特征:
- 数据不重复。(如果里面有重复的数据,集合可以自动去重)
- 数据没有顺序 (不像list 列表,tuple元组这种类型的数据可以通过索引值来找到对应的元素)
下面看下
# 定义集合 定义的时候有两个张三
stus = {"张三","张三","李四","小明","小红"}
# 打印集合中的值
print(stus) # {'张三', '小明', '李四', '小红'} 重复的数据会自动去重
# 下面不能通过索引值来取里面的元素 (没有顺序)
print(stus[0]) # 代码会报错 因为集合没有顺序
集合的应用场景
因为集合中的数据不重复,比如聊天室中的群组的人员信息,可以使用集合这种类型的数据来表示。
使用程序,将下面的数据去重并排序
1,20,9,18,17,45,30,1,20,17
分析:
- 重复问题 上面的数据有重复,如果去重,最直接的方式是将上面的数据定义为 集合 set 类型。可以直接自动去重; (set)
- 排序问题 可以使用list 中的sort方法进行排序。(list)
解决办法: https://www.yuque.com/imhelloworld/bypiud/sappnw#BTDnJ
数据之间的转换
set() 转换为集合 set类型
使用set方法来进行转换,使用 set() 方法可以将 非集合类型的数据转换为 集合类型
列表转换为集合
# 定义列表
nums = [1,20,9,18,17,45,30,1,20,17]
print(nums,type(nums)) # <class 'list'>
# 将list 转换为 set 集合
nums_set = set(nums)
# 查看 nums_set 的数据类型
print(nums_set,type(nums_set)) # {1, 9, 45, 17, 18, 20, 30} <class 'set'>
元组转换为集合
同样的,也可以使用此方式 将元组类型转换为 集合。
# 定义元组
nums = (1,20,9,18,17,45,30,1,20,17)
print(nums,type(nums)) # (1, 20, 9, 18, 17, 45, 30, 1, 20, 17) <class 'tuple'>
# 将元组转换为集合
nums_set = set(nums)
# 查看 nums_set 的数据类型
print(nums_set,type(nums_set)) # {1, 9, 45, 17, 18, 20, 30} <class 'set'>
list() 转换为列表类型
集合转换为列表
# 定义集合
nums = {1, 9, 45, 17, 18, 20, 30}
# 将集合转换为列表
nums_list = list(nums)
print(nums_list,type(nums_list)) # [1, 17, 18, 20, 9, 45, 30] <class 'list'>
元组转换为列表
# 定义元组
nums = (1, 9, 45, 17, 18, 20, 30)
# 将元组转换为列表
nums_list = list(nums)
print(nums_list,type(nums_list)) # [1, 17, 18, 20, 9, 45, 30] <class 'list'>
tuple() 转换为元组类型
集合转换为元组
# 定义集合
nums = {1, 9, 45, 17, 18, 20, 30}
# 将集合转换为列表
nums_tuple = tuple(nums)
print(nums_tuple,type(nums_tuple)) # (1, 17, 18, 20, 9, 45, 30) <class 'tuple'>
列表转换为元组
# 定义列表
nums = [1, 9, 45, 17, 18, 20, 30]
# 将集合转换为列表
nums_tuple = tuple(nums)
print(nums_tuple,type(nums_tuple)) # (1, 17, 18, 20, 9, 45, 30) <class 'tuple'>
数据转换
回到上面的问题:
https://www.yuque.com/imhelloworld/bypiud/sappnw#iVAaQ
- 要去重
- 要排序
解决办法:
# 给定的数据
nums = (1,20,9,18,17,45,30,1,20,17)
# 去重 转换为集合类型
nums_set = set(nums)
print(nums_set) # {1, 9, 45, 17, 18, 20, 30}
# 排序 转换列表
nums_list = list(nums_set)
print(nums_list) # [1, 9, 45, 17, 18, 20, 30]
# 进行排序
nums_list.sort()
print(nums_list) # [1, 9, 17, 18, 20, 30, 45]
# 最后将数据再转换为元组
nums = tuple(nums_list)
print(nums) # (1, 9, 17, 18, 20, 30, 45)
字典类型 dict
字典的定义
person = {
"name":"xiaoming",
"age":20,
"friends":["张三","李四"],
"hobby":{
"study":["Python","SQl"],
"work":["Tester","Internet"]
}
}
print(person,type(person))
访问字典中的数据
跟json格式数据访问的原理一样 可以通过key 值或者索引值来取其中字段值
person = {
"name":"xiaoming",
"age":20,
"friends":["张三","李四"],
"hobby":{
"study":["Python","SQl"],
"work":["Tester","Internet"]
}
}
print(person,type(person)) # <class 'dict'>
# 1. 打印年龄
print(person["age"]) # 20
# 2. 查看第二个朋友的名字
print(person["friends"][1]) # 李四
# 3. 交了个新朋友 小红
person["friends"].append("小红")
# 打印小明的所有朋友
print(person["friends"]) # ['张三', '李四', '小红']
# 小明的第二个学习爱好
print(person["hobby"]["study"][1]) # SQl
修改字典中的值
person = {
"name":"xiaoming",
"age":20,
"friends":["张三","李四"],
"hobby":{
"study":["Python","SQl"],
"work":["Tester","Internet"]
}
}
# 更改年龄为 25
person["age"] = 25
print(person)
print(person["age"]) # 25
删除字段
使用pop 方法 传入具体的 字段可以将 此字段进行删除操作。
person = {
"name":"xiaoming",
"age":20,
"friends":["张三","李四"],
"hobby":{
"study":["Python","SQl"],
"work":["Tester","Internet"]
}
}
# 更改年龄为 25
person["age"] = 25
print(person)
print(person["age"]) # 25
# 删除age 字段
person.pop("age")
print(person) # {'name': 'xiaoming', 'friends': ['张三', '李四'], 'hobby': {'study': ['Python', 'SQl'], 'work': ['Tester', 'Internet']}}