美文网首页
Python之元祖和字典

Python之元祖和字典

作者: 止于枯骨1 | 来源:发表于2020-09-01 23:15 被阅读0次

    1.元组

    基本介绍

    • 元组的基本形式tuple
    • 元组是一个不可变序列(一般我们希望数据不改变时,我们使用元组,其他情况下基本使用列表)
    • 使用()创建元组
    • 元组不是空元组,至少要有一个逗号(,)当元组不是空元组时括号可以省略
    • 元组解包指将元组当中每一个元素都赋值给一个变量
    a = tuple()
    print(type(a))
    输出结果:
    <class 'tuple'>
    ******************************
    tuple_m = (1,2,3,4,5)
    tuple_m[3]=10
    报错:(不可变)
    TypeError: 'tuple' object does not support item assignment
    
    ******************************
    a = 10
    b = 10,
    print(type(a),type(b))
    输出结果:
    <class 'int'> <class 'tuple'>
    
    ******************************
    A = (10,20,30,40)
    a,b,c,d = A
    print('a=',a)
    print('b=',b)
    print('c=',c)
    print('d=',d)
    输出结果:
    a= 10
    b= 20
    c= 30
    d= 40
    ******************************
    A = (10,20,30,40)
    a,b = A
    print('a=',a)
    print('b=',b)
    输出结果:
    报错:too many values to unpack (expected 2)
    

    注意:如果变量的数量要和元组中的元素一一对应,如果不对应,可以加个 * ,变量将会获取元素当中剩余的元素

    A = (10,20,30,40)
    a,b,*c = A
    print('a=',a)
    print('b=',b)
    print('c=',c)
    输出结果:
    a= 10
    b= 20
    c= [30, 40]
    

    2.字典

    2.1字典基本介绍

    • 字典属于一种新的数据结构称为映射(mapping)
    • 字典的作用和列表类似,都是用来储存对象的容器
    • 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
    • 字典中的每一个元素都有唯一的名字,通过这个唯一的名字可以找到指定的元素
    • 这个唯一的名字我们称之为key,通过key可以快速查询value也可称之为值
    • 字典我们也可称之为键值对(key-value)结构
    • 每个字典都可以有多个键值对,而且每个键值对我们称之为一项(item)
    • 创建一个有数据的字典 语法{key:value}
    • 字典的值可以是任意对象 字典的键可以是任意的不可变对象(int str bool tuple…)
    • 字典的建是不能重复的,如果出现重复后面的会替换前面的
    d  = {'name':'葫芦娃','age':'7','sex':'男','name':'金刚葫芦娃'}print(d['name'],d['age'],d['sex'])
    print(d)
    输出结果:
    金刚葫芦娃 7 男
    {'name': '金刚葫芦娃', 'age': '7', 'sex': '男'} 
    
    *****************************
    a = dict([('name','葫芦娃'),('age',7)])
    print(a,type(a))
    输出结果:
    {'name': '葫芦娃', 'age': 7} <class 'dict'>
    
    

    2.2字典的使用

    • dict()函数来创建字典
      注意:也可以将一个包含有双值子序列的序列转化为字典.
      双值序列:序列当中有2个值,例如:[4,5]
      子序列:如果序列当中的元素也是序列,我们就称这个元素为子序列.例如:[(1,2,3),(4,5)]
    a = dict(name='葫芦娃',age=7,sex='男')
    b = dict([('name','葫芦娃'),('age',7)])
    print(a,type(a))
    print(b,type(b))
    输出结果:
    {'name': '葫芦娃', 'age': 7, 'sex': '男'} <class 'dict'>
    {'name': '葫芦娃', 'age': 7} <class 'dict'>
    
    
    d  = {'name':'葫芦娃','age':'7','sex':'男'}
    len()  字典中键值对的个数
     print(len(d))
    
     in 检查字典中是否包含有指定的键
     not in  检查字典中是否不包含有指定的键
    
    print('葫芦娃' in d)
    print('葫芦娃' not in d)
    
    
    • get(key[,default])根据键来获取字典的值。第二个参数可以制定一个默认值,当获取不到的时候会返回默认值
    d  = {'name':'葫芦娃','age':'7','sex':'男'}
    print(d.get('name'))
    print(d.get('name','啥也不是'))
    print(d.get('nameA','啥也不是'))
    print(d.get('nameA'))
    输出结果:
    葫芦娃
    葫芦娃
    啥也不是
    None
    
    • 字典的修改和添加
    d  = {'name':'葫芦娃','age':'7','sex':'男'}
    d['name']= '猪猪侠'   #修改字典中的value
    print(d)
    d['phont']= 110    #如果字典中没有key,我们向字典中添加key-value
    print(d)
    #setdefault(key,default) 可以向字典中添加key-value
    #如果字典中的key值已经存在,不会对字典有任何操作
    #如果字典中的key值不存在,则向这个字典中添加这个key并设置value
    d.setdefault('name','喜洋洋')  
    print(d)
    d.setdefault('nameA','喜洋洋')
    print(d)
    输出结果:
    {'name': '猪猪侠', 'age': '7', 'sex': '男'}
    {'name': '猪猪侠', 'age': '7', 'sex': '男', 'phont': 110}
    {'name': '猪猪侠', 'age': '7', 'sex': '男', 'phont': 110}
    {'name': '猪猪侠', 'age': '7', 'sex': '男', 'phont': 110, 'nameA': '喜洋洋'}
    
    • update()将其他字典的key-value添加到当前字典当中,如果有重复的key,后边的会覆盖前边的
    a = {'a':1,'b':2,'c':3}
    a1 = {'d':4,'e':5,'f':6,'a':7}
    a.update(a1)
    print(a)
    输出结果:
    {'a': 7, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
    
    
    
    • del删除字典中的key-value
    a = {'a':1,'b':2,'c':3}
    del  a['a']
    print(a)
    输出结果:
    {'b': 2, 'c': 3}
    
    • popitem()删除字典最后的一个key-value 一般都会删除最后一个,这个方法是有返回值的。删除之后它会将删除的key-value作为返回值返回,返回的是一个元组,元组中有2个元素,第一个元素是删掉的可key,第二个元素是删掉的value
    a = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
    r=  a.popitem()
    print(a)
    print(r)
    输出结果:
    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
    ('f', 6)
    
    
    • pop(key[,default])根据key删除字典中的value。第二个参数可以制定一个默认值,当获取不到值的滞后就会返回默认值,
    a = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
    r = a.pop('b')
    print(a)
    print(r)
    w= a.pop('w','这个没有')
    print(w)
     n= a.pop('w')  #报错KeyError: 'w'
    print(n)
    输出结果:
    {'a': 1, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
    2
    这个没有
    
    • clean()
    a = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
    a.clean()
    print(a)
    输出结果:
    {}
    

    2.3copy() (浅复制)

    • copy()方法对字典进行潜复制
      注意:潜复制只会复制字典本身,如果字典中还有个字典是不会进行复制的
    a1 = {'d':{'name':'黑猫警长'},'e':5,'f':6,'a':7}
    a = a1.copy()
    a['d']['name'] = '喜洋洋'
    print('a1=',a1,id(a1))
    print('a=',a,id(a))
    输出结果:
    a1= {'d': {'name': '喜洋洋'}, 'e': 5, 'f': 6, 'a': 7} 140327461091200
    a= {'d': {'name': '喜洋洋'}, 'e': 5, 'f': 6, 'a': 7} 140327461091456
    ***********************************************
    a1 = {'d':'ad','e':5,'f':6,'a':7}
    a= a1.copy()
    a['d']= 'we'
    print('a1=',a1,id(a1))
    print('a=',a,id(a))
    输出结果:
    a1= {'d': 'ad', 'e': 5, 'f': 6, 'a': 7} 140403938948928
    a= {'d': 'we', 'e': 5, 'f': 6, 'a': 7} 140403938948992
    

    3字典的遍历

    我们主要通过3种方式对字典进行遍历

    • key() 该方法返回字典所有的key
    • values() 该方法返回一个序列 序列中保存有字典的值
    • items() 该方法会返回字典中所有的项 它返回一个序列,序列中包含双值子序列 双值分别是 字典中的key和value
    d  = {'name':'葫芦娃','age':'7','sex':'男'}
    
    for k in d.keys():
         print(k)
    输出结果:
    name
    age
    gender
    
    *****************************************
    for v in d.values():
         print(v)
    输出结果:
    葫芦娃
    7
    男
    
    *****************************************
    for k,v in d.items():
        print(k)
        print(v)
    输出结果:
    name
    葫芦娃
    age
    7
    gender
    男
    
    
    

    4.集合

    4.1集合简介

    • 集合表现形式 set , 集合和列表非常相似
    • 不同点 (集合和列表)
      1.集合只能存储不可变对象
      2. 集合中存储的对象是无序的(不是按元素插入顺序保存的)
      3.集合不能出现重复元素
    b = {[1,2,3],[4,5,6]}
    print(b)
    输出结果: #集合只能存储不可变对象
    报错:
    TypeError: unhashable type: 'list'
    
    ********************************************
    s = {1,2,10,3,4}
    print(a ,type(a))
    输出结果:#集合中存储的对象是无序的
    {1, 2, 3, 4, 10} <class 'set'>
    ********************************************
    a = {1,2,10,3,4,1}
    print(a ,type(a))
    输出结果:#集合不能出现重复元素
    {1, 2, 3, 4, 10} <class 'set'>
    
    
    • 使用 {} 来创建
    a = {1,2,3}
    print(type(a))
    输出结果:
    <class 'set'>
    
    • 可以通过set() 来将序列和字典转换成集合
    s =set ([1,2,3,4])
    print(s,type(s))
    输出结果:
    {1, 2, 3, 4} <class 'set'>
    
    • len()使用len()来获取集合中元素的数量
    s = {1,2,3,5,4}
    print(len(s))
    输出结果:
    5
    
    • add()向集合中添加元素
    s = {1,2,3,5,4}
    s.add(6)
    print(s)
    输出结果:
    {1, 2, 3, 4, 5, 6}
    
    • update() 将一个集合中的元素添加到另外一个集合当中
    s = {1,2,3,5,4}
    s1 = {8,9,7}
    s.update(s1)
    print(s)
    输出结果:
    {1, 2, 3, 4, 5, 7, 8, 9}
    
    • pop() 随机删除集合中的一个元素(一般是删除最后一个元素)
    s = {1,2,3,5,4}
    s.pop()
    print(s)
    输出结果:
    {2, 3, 4, 5}
    
    • remove() 删除集合中指定的元素
    s = {1,2,3,5,4}
    s.remove(2)
    print(s)
    输出结果:
    {1, 3, 4, 5}
    
    • clear() 清空集合
    s = {1,2,3,5,4}
    s.clear()
    print(s)
    输出结果:
    set()
    

    4.2集合的运算

    • & 交集运算
    • | 并集运算
    • - 差集运算
    • ^亦或集
    • <= 检查一个集合是否是另外一个集合的子集
    • < 检查一个集合是否是另外一个集合的真子集
    • >= 检查一个集合是否是另外一个集合的超集
    • > 检查一个集合是否是另外一个集合的真超集
     s = {1,2,3,4,5}
     s2 = {3,4,5,6,7}
    
     & 交集运算
    r = s & s2
    
     | 并集运算
     r = s | s2
    
     - 差集运算
     r = s - s2
     r = s2 - s
    
     ^ 亦或集
     r = s2 ^ s
    print('s='s,'s2='s2,'r='r)
    
    输出结果:
    s={1, 2, 3, 4, 5}
    s2={3, 4, 5, 6, 7}
    
    r={3, 4, 5} #交集运算
    r={1, 2, 3, 4, 5, 6, 7}#并集运算
    r={1, 2}      r={6, 7}  #差集运算
    r={1, 2, 6, 7} #亦或集
    
    ****************************************
    a = {1,2,3,}
    b = {1,2,3,4,5}
    r = a <= b
    r1 = a < b
    print(r,r1)
    输出结果:
    True #检查集合a是否是集合b的子集
    True #检查集合a是否是另外集合b的真子集
    
    

    相关文章

      网友评论

          本文标题:Python之元祖和字典

          本文链接:https://www.haomeiwen.com/subject/mwkvsktx.html