zzy
07-Python散列类型方法

07-Python散列类型方法


        

已学类型:

  1. 数值类型: 存储一个数值数据
    int – 整数,整型
    float – 小数,浮点型
    bool – 布尔型 True/1 False/0

  2. 序列类型: 有序的存储多个数据
    str – 字符串.用引号包裹字符内容进行保存
    list – 列表,用中括号把数据包裹起来.里面的数据可以改变
    tuple – 元组,用小括号把数据包裹起来.里面的数据不可改变

散列类型:

  1. 可以存放多个数据
  2. 内部是无序的(没有下标)
  3. 内部数据不重复

集合(set)

表现形式

用大括号包裹起来的数据.里面的数据用逗号隔开.

  1. 无序
  2. 去重

语法:

集合名 = {数据1,数据2,数据3}

案例:

1
2
3
4
program = {'python','java','php','js','C艹','vb'}
num = {1,1,4,5,1,4,1,9,1,9,8,1,0}
# 如果集合里有重复的数据.不会报错.只是这些重复的数据不会真正存入到集合里
# print(num[1]) 集合里没有下标.所以用索引会报错

运算:

集合可以进行简单的逻辑运算符 –> 交并差集

  • 集合1 & 集合2 –> 获取交集
  • 集合1 | 集合2 –> 获取并集
  • 集合1 - 集合2 –> 获取差集
1
2
3
4
5
6
set1 = {1,2,3}
set2 = {3,4,5}
print(set1 & set2) # 交集 3
print(set1 | set2) # 并集 12345
print(set1 - set2) # 差集 1 2
print(set2 - set1) # 差集 4 5

有两个文件夹.删除里面的同名/重复的文件 –> 通过交集判断. 有哪些文件是两个文件夹里都有的.就属于重复数据

  • 集合里面不可以放列表
  • 集合的本质:
    1. 存储非重复数据 –> 去重
    2. 进行逻辑判断,进行交并差集运算
1
2
3
4
5
6
7
8
9
10
# 通过集合.实现对列表的快速去重
li = [1,1,4,5,1,4,1,9,1,9,8,1,0]
li = set(li) # 把列表转为集合. 实现去重
li = list(li) # 把去重后的数据,重新转为列表
print(li,type(li))

# 简化写法
li = [1,1,4,5,1,4,1,9,1,9,8,1,0]
li = list(set(li)) # 先把li转为集合.再转为列表. 最后再赋值保存
print(li)

集合的方法

1
program = {'python','java','php','js','C艹','vb'}

  1. add:
    添加一个数据到集合里
    集合.add(数据)

    1
    program.add('Ruby')
  2. update:
    把一个序列类型打散后添加到集合里
    集合.update(序列数据)

    1
    2
    programe.update('[C,C#]') # 增加{C,C#} 
    programe.update('ABC') # 增加{A,B,C}
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    ### **删**

    1. pop:

    删除一个数据,从最后一个数据开始删
    `集合.pop()`

    ```python
    program.pop()
  3. remove:
    删除指定的数据
    集合.remove(数据)

    1
    program.remove('java')

字典(dict)

表现形式为用大括号包裹起来的数据. 里面的数据用键值对的方式保存. 键值对之间用逗号隔开

键值对

  • 键值对:左边的相当于名字.右边的相当于值
  • key:value –> 左边是键 中间冒号 右边是值
  • 变量名:变量值

注意:

  • 键名一般是用字符串/整型来表示
  • 值里面什么都可以放. 变量,函数,其他

声明语法:

字典名 = {键:值, 键:值}

案例

1
2
3
4
5
6
7
8
zzy = {
'姓名':'zzy',
'年龄': 114,
}

zzy = {
'姓名':'zzy', '年龄': 114
}
  • 字典保存的数据比用列表,元组保存的数据看起来更加清晰.
  • 要保存的数据.有明显的对照关系.就可以用字典保存.看起来也更清晰明了

字典的输出:

print(字典名)

1
print(zzy)

具体输出
print(字典名[键名]) 输出该键的值

1
print(zzy['姓名']) # 输出字典里的姓名

字典的修改:

字典[键名] = 值 修改指定键的值

1
zzy['年龄'] = 514 # 找到zzy里的年龄.改为514

字典的特性:

  1. 字典是通过键值对的方式来获取/保存数据
  2. 字典里的数据是可以修改,嵌套 (字典里还可以放一个字典)
  3. 字典里键是唯一的

总结:

用一个看起来更清晰明了的方式来保存/使用数据.
保存方式为键值对
可以把键值理解为变量. 键就是变量名,值就是变量值

声明空变量

1
2
3
4
5
列表名 = []  # 声明一个空列表
元组名 = () # 声明一个空元组
字符串名 = '' # 声明一个空的字符串
字典名 = {} # 声明一个空的字典. 因为字典用的比集合多
集合名 = set() # 什么一个空集合

字典的方法

  1. setdefault:
    添加一个键值对

    1. 新增一个键.值为空
      字典.setdefault(键名)
      1
      zzy.setdefault('性别')
    2. 新增一个键值对
      字典.setdefault(键名,值)
      1
      zzy.setdefault('性别','♂')

  1. pop:

    通过键名删除指定的数据
    字典.pop(键名)

    1
    zzy.pop('性别')
  2. popitem:

    删除一个键值对.从最后一个数据开始删
    字典.popitem()

    1
    zzy.popitem()
  3. clear:

    清空整个字典
    字典.clear()

    1
    zzy.clear()

  1. update:
    以键值对的方式修改数据.如果没有就新增
    1. 修改键值对
      字典.update({键:值})
      1
      zzy.update({'年龄':19})
    2. 如果没有这个键值对.就视为新增
      字典.update({键:值})
      1
      zzy.update({'游戏':'雀魂'})
    3. 新增多个键值对
      字典.update({键:值,键:值})
      1
      zzy.update({'职业':'学生','身高':114.5})

  1. get:
    通过键名获取值. 如果没有该键.输出None
    字典.get(键名)

    1
    zzy.get('余额')
  2. keys:
    获取所有的键
    字典.keys()

    1
    zzy.keys()
  3. values:
    获取所有的值
    字典.values()

    1
    zzy.values()
  4. items:
    获取所有的键值
    字典.items()

    1
    zzy.items()
本文作者:zzy
本文链接:http://周梓煜.com/2024/05/02/python-07-散列类型方法/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可