python 第七章 初识散列类型

111 阅读5分钟

大家好我是程序员_蓝天, 本文是为了方便初学者能够快速学习python,写的可能不是很好,希望大家多多包涵。 每个赞都是我前进的动力。

散列类型的特性:

  可以存放多个数据  
  散列类型内部是无序的  
  内部的数据是不重复

初识集合(set)

  集合(set) --> 保存一些{不重复}的数据,并且是{无序存储}的容器. 主要功能是1.去重 2.逻辑判断  

  表现形式:  
      用大括号{}包裹起来的数据,里面的数据用逗号,隔开  
  语法:  
      集合名 = {数据1,数据2,数据3}  
      set1 = {465,True,'你好'}  

  set1 = {1,2,3,4,5,1,1,70,6,3,4}  
  print(set1) # 正常输出一个集合.里面的重复元素都被去掉了  
  print(set1[1]) # 会报错,散列类型是无序的,没有下标这个概念  
  print(type(set1))  

  集合的逻辑运算:  
      集合1 & 集合2 --> 判断交集  
      集合1 | 集合2 --> 判断并集  
      集合1 - 集合2 --> 判断差集  

  & --> shift + 7  
  | --> shit + \  
  - --> 减号  

  交集 --> 一个数据,两个集合里都有  
  并集 --> 两个集合里的所有数据(不算重复的)  
  差集 --> 一个集合与另一个集合相比,它独有的(集合a独有的.并集去集之后的就是差集)  
     
  set1 = {1,2,3}  
  set2 = {3,4,5}  
  print(set1 & set2) # 交集3      
  print(set1 | set2) # 并集 1,2,3,4,5  
  print(set1 - set2) # 差集 1,2  

  你有两个文件夹,里面有很多数据,也有很多同名的重复数据 --> 通过交集判断找出里面的重复数据,就可以清理掉  

  集合里面不可以放列表!!!  

  集合的本质:  
      1.存储非重复的数据 --> 去重  
      2.进行逻辑判断,集合运算 交并差,父子超  
  http://c.biancheng.net/view/4400.html  

  类型转换:  
  set(数据) # 把数据转换为set类型  

  小练习: 列表去重  
  li = [1,2,3,4,70,520,1,2,3]  
  li = set(li) # 把列表li转换为集合,去重  
  li = list(li) # 把去重过后的集合li,重新转为列表  
  # li = list(set(li))  
  print(li)  

集合的方法

  set1 = {1,2,3}  

  增:  
      add: 添加一个数据  
      集合名.add(数据)  
      set1.add(70)  
  删:  
      pop: 删除一个元素,从第一个元素开始删  
      集合名.pop()  
      set1.pop()  

      remove: 删除一个指定元素  
      集合名.remove(数据)  
      set1.remove(70)  

  改:  
      update: 把一些序列类型的数据,打散并添加到序列类型里  
      集合名.update(序列类型)  
      set1.update('多穿衣服')  
  把一个序列类型的数据,拆分后添加到集合里.里面的数据会被打乱  

初识字典(dict)

  字典(dict)是用来保存一些有明显'对应说明关系'的数据,它用键值对的方式来保存数据  

  新华字典用法: 找到一个,并获取它的描述  
  帅:形容一个人长得好看  
  富:形容一个人很有钱  
  属性名:描述  

  属性:描述 --> 键值对  
  键:值 --> 键相当于是名字 值就是值,描述  

  key:value --> 键值对  
  '姓名':'七零' --> 右边的数据是对左边键的描述  

  字典的表现形式为:  
  用大括号{}包裹起来的数据,数据用键值对的方式来保存,数据直接用逗号隔开  

  z = {  
     'name':'蓝天',  
      'age':18,  
      'height':177.5,  
      'money':888.88  
    }  
  字典名 = {键1:值1,键2:值2}  
  键值对  键:值  'age':18  

  比起列表和元组.字典有啥优势?  
  z = ['z',18,177.5,True,632.6] # 不加注释,过阵子看不懂里面的数据分别表示啥了  

  输出方式:  
      print(字典名)  
      print(字典名[键名])  
      print(z) # 输出整个字典  
      print(z['name']) # 输出键盘里.键为'name''值'  

  修改方式:  
      字典名[键名] = 值 # 修改这个键的值  
      z['age'] = 26  

  字典的特性:  
      1.通过键值对的方式来存值,取值.而不是通过下标  
      2.字典里面的数据是可以改变的,并且可以嵌套(字典里面可以再放一个字典,作为值)  
      3.键名是唯一的  

  字典的好处就是比起别的类型,它存储的数据会更清晰!!!  

  本质:  
      用一个更好的方式存储一些特定的数据,数据之间存储有一个解释说明的关系.键值对  

声明空变量

  str1 = '' # 声明一个空的字符串  
  li1 = [] # 声明一个空的列表  
  tu1 = () # 声明一个空的元组  
  dict1 = {} # 声明一个空的字典  
  set1 = set() # 声明一个空的集 

字典的方法:

  z = {  
      'zname':'蓝天',  
      'age':18,  z
      'height':177.5,  
      'money':888.88  
  }  
 增:  
    setdefault: 给字典添加一个数据,如果已经有这个数据了,就输出他  

    1.新增一个键,值为空  
    字典名.setdefault{键名}  
    z.setdefault('性别')  

    2.新增一个键值对  
    字典名.setdefault{键名,值}  
    kylin.setdefault('存款',520.88)  

    3.新增一个键,但那个键已经有了,改为输出  
    字典名.setdefault{键名}  
   z.setdefault('性别')  

删:  
    pop: 通过键名,删除指定的数据  
        字典名.pop(键名)  
        z.pop('height')  

    popitem: 直接删除一个键值对,从最后键值对开始删  
        字典名.popitem()  
        z.popitem()  
    clear: 清空字典  
        字典名.clear()  
        z.clear()  

 改:  
     update: 修改键的值,如果没有这个键,就新增一个  

     1.正常修改键的值  
         字典名.update({键:值})  
         z.update({'性别':'男'})  

     2.修改一个值,没有找到这个值,那就新增一个  
         字典名.update({键:值})  
          z.update({'体重':'110斤'})  

     3.新增多个键值对  
         字典名.update({键:值,键:值})  
         z.update({'工作':'python讲师','家乡':'广东'})  

 查:  
     get: 通过键名,获取键值.如果没有找到这个键,返回None,不会报错  
         字典名.get(键名)  
         z.get('工作')  

     keys:获取所有的键  
         字典名.keys()  
         z.keys()  

     values:获取所有的值  
         字典名.values()  
        z.values()  

     items: 获取所有的键值对  
         字典名.items()  
         z.items()