六,元祖,字典,集合类型详解

Posted on 2018-08-19 17:44  Schwifety  阅读(228)  评论(0编辑  收藏  举报

一、元祖类型 tuple

  与列表类型的差别就是无法修改.

  定义方式:在()内用逗号分隔开多个任意类型的值

  该类型总结
    存多个值

    有序

    不可变

二、字典类型 dict

  用途:记录多个值,每一个值都对应的key用来描述value的作用

  定义方式:在{}内用逗号分隔开多 个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常情况下应该str类型

   用法一:

     dic=dict(x=1,y=2,z=3)
     print(dic)

  

   用法二:
     userinfo=[
     ['name','egon'],
     ['age',18],
     ['sex','male']
      ]
     d={}
     for k,v in userinfo: #k,v=['name', 'egon']
     print(k,v)
    d[k]=v
     print(d)

     d=dict(userinfo)
    print(d)

  

  3 常用操作+内置的方法
  优先掌握的操作:
    1、按key存取值:可存可取

           dic['age']=18

      按get取值

        dic.get()

        没有找到返回None

    2、长度len

    

    3、成员运算in和not in:字典的成员运算判断的是key
      dic={'name':'egon','age':18,}
       print(18 in dic)
       print('age' in dic)

    

    4、删除
       dic={'name':'egon','age':18,}
      通用
      del dic['name']
       print(dic)
      del dic['xxx'] ##key不存在则报错

  

      

       res=dic.pop('age') #删除key对应的value,并返回value
       print(dic)
       print(res) #
       dic.pop('xxx') #key不存在则报错

      res=dic.popitem()

    5、键keys(),值values(),键值对items()

    

    6、循环
      dic={'name':'egon','age':18,'sex':'male'}

      for k in dic.keys():
       print(k,dic[k])

       for k in dic:
       print(k,dic[k])

      for v in dic.values():
      print(v)

      for k,v in dic.items():
      print(k,v)

  需要掌握的操作:  

   dic.fromkeys()的用法:
    l=['name','age','sex']
    dic={'name':None,'age':None,'sex':None}


    dic={}
    for k in l:
    dic[k]=None
    print(dic)


    dic=dic.fromkeys(l,None)
    print(dic)

   

   update的用法:有则修改,无则添加(更新)

    old_dic={'name':'egon','age':18,'sex':'male'}
    new_dic={'name':'EGON','x':1,'y':2}
    old_dic.update(new_dic)
    print(old_dic)

    

   

   setdefault:有则不动/返回原值,无则添加/返回新值
    dic={'name':'egon','age':18}
    res=dic.setdefault('name','EGON') # 字典中已经存在key则不修改,返回已经存在的key对应的value
    print(dic)
    print(res)

    res=dic.setdefault('sex','male') # 字典不存在key则添加"sex":"male",返回新的value
    print(dic)
    print(res)

 

  该类型总结
    1 存多个值

    2 无序

    3 可变

三、集合类型:set

  1 用途: 关系运算,去重

  2 定义方式: 在{}内用逗号分开个的多个值
  集合的三大特性:
    2.1 每一个值都必须是不可变类型
    2.2 元素不能重复
    2.3 集合内元素无序

  3 常用操作+内置的方法
  pythons={'李二丫','张金蛋','李银弹','赵铜蛋','张锡蛋','alex','oldboy'}
  linuxs={'lxx','egon','张金蛋','张锡蛋','alex','陈独秀'}
   取及报名python课程又报名linux课程的学员:交集
    print(pythons & linuxs)
    print(pythons.intersection(linuxs))

   取所有报名老男孩课程的学员:并集
    print(pythons | linuxs)
    print(pythons.union(linuxs))

   取只报名python课程的学员: 差集
    print(pythons - linuxs)
    print(pythons.difference(linuxs))

   取只报名linux课程的学员: 差集
    print(linuxs - pythons)
    print(linuxs.difference(pythons))

   取没有同时报名两门课程的学员:对称差集
    print(pythons ^ linuxs)
    print(pythons.symmetric_difference(linuxs))

  是否相等
    s1={1,2,3}
    s2={3,1,2}
    print(s1 == s2)

  父集:一个集合是包含另外一个集合
    s1={1,2,3}
    s2={1,2}
    print(s1 >= s2)
    print(s1.issuperset(s2))

    s1={1,2,3}
    s2={1,2,4}
    print(s1 >= s2)

  子集
    s1={1,2,3}
    s2={1,2}
    print(s2 <= s1)
    print(s2.issubset(s1))

  

  需要掌握操作    

    s1={1,2,3}
    s2={1,2}
    s1.difference_update(s2) #s1=s1.difference(s2)
    print(s1)#{3}

   增加值
    s1={1,2,3}
    s1.update({3,4,5})  

    s1={1,2,3}
    s1.add(4)

   随机删 

    s1={1,2,3}
    res=s1.pop()

   删除

    s1={1,2,3}
    res=s1.remove(3) #单纯的删除,返回值为None

    s1={1,2,3}
    res=s1.discard(3) ##单纯的删除,返回值为None
    print(s1)
    print(res)
    s1.remove(444444) #删除的元素不存在则报错
    s1.discard(444444) #删除的元素不存在不会报错

   

  s1={1,2,3}
  s2={1,2,4}
  print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True

  该类型总结
  1 存多个值

  2 无序

  3 set可变

  

# 集合去重
# 局限性
#1、无法保证原数据类型的顺序
#2、当某一个数据中包含的多个值全部为不可变的类型时才能用集合去重