数据类型

  • 集合
  • 字典

集合类型 set

定义集合

  1. # 定义变量
  2. a = {"a","b","c","a"}
  3. print(type(a)) # <class 'set'>

集合的特征

集合数据类型有两个重要的特征:

  • 数据不重复。(如果里面有重复的数据,集合可以自动去重)
  • 数据没有顺序 (不像list 列表,tuple元组这种类型的数据可以通过索引值来找到对应的元素)

下面看下

  1. # 定义集合 定义的时候有两个张三
  2. stus = {"张三","张三","李四","小明","小红"}
  3. # 打印集合中的值
  4. print(stus) # {'张三', '小明', '李四', '小红'} 重复的数据会自动去重
  5. # 下面不能通过索引值来取里面的元素 (没有顺序)
  6. print(stus[0]) # 代码会报错 因为集合没有顺序

集合的应用场景

因为集合中的数据不重复,比如聊天室中的群组的人员信息,可以使用集合这种类型的数据来表示。

使用程序,将下面的数据去重并排序

  1. 1,20,9,18,17,45,30,1,20,17

分析:

  1. 重复问题 上面的数据有重复,如果去重,最直接的方式是将上面的数据定义为 集合 set 类型。可以直接自动去重; (set)
  2. 排序问题 可以使用list 中的sort方法进行排序。(list)

解决办法: https://www.yuque.com/imhelloworld/bypiud/sappnw#BTDnJ

数据之间的转换

列表,集合,元组 之间可以进行数据转换。

set() 转换为集合 set类型

使用set方法来进行转换,使用 set() 方法可以将 非集合类型的数据转换为 集合类型

列表转换为集合

  1. # 定义列表
  2. nums = [1,20,9,18,17,45,30,1,20,17]
  3. print(nums,type(nums)) # <class 'list'>
  4. # 将list 转换为 set 集合
  5. nums_set = set(nums)
  6. # 查看 nums_set 的数据类型
  7. print(nums_set,type(nums_set)) # {1, 9, 45, 17, 18, 20, 30} <class 'set'>

元组转换为集合

同样的,也可以使用此方式 将元组类型转换为 集合。

  1. # 定义元组
  2. nums = (1,20,9,18,17,45,30,1,20,17)
  3. print(nums,type(nums)) # (1, 20, 9, 18, 17, 45, 30, 1, 20, 17) <class 'tuple'>
  4. # 将元组转换为集合
  5. nums_set = set(nums)
  6. # 查看 nums_set 的数据类型
  7. print(nums_set,type(nums_set)) # {1, 9, 45, 17, 18, 20, 30} <class 'set'>

list() 转换为列表类型

使用list() 方法可以将非 列表类型的数据 转换为列表

集合转换为列表

  1. # 定义集合
  2. nums = {1, 9, 45, 17, 18, 20, 30}
  3. # 将集合转换为列表
  4. nums_list = list(nums)
  5. print(nums_list,type(nums_list)) # [1, 17, 18, 20, 9, 45, 30] <class 'list'>

元组转换为列表

  1. # 定义元组
  2. nums = (1, 9, 45, 17, 18, 20, 30)
  3. # 将元组转换为列表
  4. nums_list = list(nums)
  5. print(nums_list,type(nums_list)) # [1, 17, 18, 20, 9, 45, 30] <class 'list'>

tuple() 转换为元组类型

使用list() 方法可以将非 列表类型的数据 转换为列表

集合转换为元组

  1. # 定义集合
  2. nums = {1, 9, 45, 17, 18, 20, 30}
  3. # 将集合转换为列表
  4. nums_tuple = tuple(nums)
  5. print(nums_tuple,type(nums_tuple)) # (1, 17, 18, 20, 9, 45, 30) <class 'tuple'>

列表转换为元组

  1. # 定义列表
  2. nums = [1, 9, 45, 17, 18, 20, 30]
  3. # 将集合转换为列表
  4. nums_tuple = tuple(nums)
  5. print(nums_tuple,type(nums_tuple)) # (1, 17, 18, 20, 9, 45, 30) <class 'tuple'>

数据转换

python-day3 集合,字典 - 图1

回到上面的问题:

https://www.yuque.com/imhelloworld/bypiud/sappnw#iVAaQ

  1. 要去重
  2. 要排序

解决办法:

  1. # 给定的数据
  2. nums = (1,20,9,18,17,45,30,1,20,17)
  3. # 去重 转换为集合类型
  4. nums_set = set(nums)
  5. print(nums_set) # {1, 9, 45, 17, 18, 20, 30}
  6. # 排序 转换列表
  7. nums_list = list(nums_set)
  8. print(nums_list) # [1, 9, 45, 17, 18, 20, 30]
  9. # 进行排序
  10. nums_list.sort()
  11. print(nums_list) # [1, 9, 17, 18, 20, 30, 45]
  12. # 最后将数据再转换为元组
  13. nums = tuple(nums_list)
  14. print(nums) # (1, 9, 17, 18, 20, 30, 45)

字典类型 dict

字典的定义

  1. person = {
  2. "name":"xiaoming",
  3. "age":20,
  4. "friends":["张三","李四"],
  5. "hobby":{
  6. "study":["Python","SQl"],
  7. "work":["Tester","Internet"]
  8. }
  9. }
  10. print(person,type(person))

访问字典中的数据

跟json格式数据访问的原理一样 可以通过key 值或者索引值来取其中字段值

  1. person = {
  2. "name":"xiaoming",
  3. "age":20,
  4. "friends":["张三","李四"],
  5. "hobby":{
  6. "study":["Python","SQl"],
  7. "work":["Tester","Internet"]
  8. }
  9. }
  10. print(person,type(person)) # <class 'dict'>
  11. # 1. 打印年龄
  12. print(person["age"]) # 20
  13. # 2. 查看第二个朋友的名字
  14. print(person["friends"][1]) # 李四
  15. # 3. 交了个新朋友 小红
  16. person["friends"].append("小红")
  17. # 打印小明的所有朋友
  18. print(person["friends"]) # ['张三', '李四', '小红']
  19. # 小明的第二个学习爱好
  20. print(person["hobby"]["study"][1]) # SQl

修改字典中的值

  1. person = {
  2. "name":"xiaoming",
  3. "age":20,
  4. "friends":["张三","李四"],
  5. "hobby":{
  6. "study":["Python","SQl"],
  7. "work":["Tester","Internet"]
  8. }
  9. }
  10. # 更改年龄为 25
  11. person["age"] = 25
  12. print(person)
  13. print(person["age"]) # 25

删除字段

使用pop 方法 传入具体的 字段可以将 此字段进行删除操作。

  1. person = {
  2. "name":"xiaoming",
  3. "age":20,
  4. "friends":["张三","李四"],
  5. "hobby":{
  6. "study":["Python","SQl"],
  7. "work":["Tester","Internet"]
  8. }
  9. }
  10. # 更改年龄为 25
  11. person["age"] = 25
  12. print(person)
  13. print(person["age"]) # 25
  14. # 删除age 字段
  15. person.pop("age")
  16. print(person) # {'name': 'xiaoming', 'friends': ['张三', '李四'], 'hobby': {'study': ['Python', 'SQl'], 'work': ['Tester', 'Internet']}}

python-day3 集合,字典 - 图2