• Python学习笔记-Day5


    内容大纲:

    一、字典介绍

    二、字典的增、删、改、查

    三、字典的三种特殊方法

    四、字典的嵌套

    五、补充:分别赋值

    一、字典介绍

    字典是python的基本数据类型之一,可以存储大量的关系型数据,也是python中唯一的映射类数据类型。

    数据类型的分类:

    可变的(不可哈希的):list、dict、集合

    不可变的(可哈希的):int、str、bool、tuple

    字典是以键值对(key-value)的形式存在,dict = { key: value , key : value,.......}

    其中,字典的key必须是不可变的数据类型,字典的value可以是任意的数据类型

    例如:

    dic = {'name_list': ['王双', 'alex', '孙飞', 'taibai'],
           1: {'name': 'taibai', 'age': 18, 'sex': ''},
           (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]
           }

    二、字典的增、删、改、查

    1、字典的增(两种方法)

    (1)用key进行定位,用=进行重新赋值:字典中不存在这个key时,增加这个key到字典中,字典中本来就存在这个key时,就修改这个key对应的value。

    dic = {'name':'helen','age':18,'sex':'women'}
    dic['name'] = 'amy'  #字典中有这个key,会修改这个key对应的value
    print(dic)
    
    dic['habby'] = 'swimming'   #字典中没有这个key,会增加这个key到字典中
    print(dic)
    
    
    输出结果:
    {'name': 'amy', 'age': 18, 'sex': 'women'}
    {'name': 'amy', 'age': 18, 'sex': 'women', 'habby': 'swimming'}

    (2)setdefault(key,value):字典中不存在这个key时,增加这个key到字典中;字典中原本就存在这个key时,不进行任何操作。value可以省略,默认添加None。

    dic = {'name':'helen','age':18,'sex':'women'}
    dic.setdefault('hobby','swiming')    #增加到字典中
    print(dic)
    
    输出结果:{'name': 'helen', 'age': 18, 'sex': 'women', 'hobby': 'swiming'}
    
    
    dic = {'name':'helen','age':18,'sex':'women'}
    dic.setdefault('hobby')        #增加到字典中,'hobby'对应的value值是None
    print(dic)
    
    输出结果:{'name': 'helen', 'age': 18, 'sex': 'women', 'hobby': None}
    
    
    dic = {'name':'helen','age':18,'sex':'women'}
    dic.setdefault('name','amy')     #不会修改原来的字典
    print(dic)
    
    输出结果:{'name': 'helen', 'age': 18, 'sex': 'women'}

    2、字典的删(4种方法)

    (1)pop(k,None):按照key进行删除键值对,返回值是被删除的key对应的value,可以设置第二参数,若没有设置第二参数,没有key时程序会报错。

    ic = {'name':'helen','age':18,'sex':'women'}
    dic.pop('name')   #按照key来删除name-helen
    print(dic)
    
    dic = {'name':'helen','age':18,'sex':'women'}
    print(dic.pop('name'))   #返回被删除的key对应的value,结果是  helen
    
    dic = {'name':'helen','age':18,'sex':'women'}
    # dic.pop('hobby')   #程序会报错
    dic.pop('hobby','没有这个数')    #程序不会报错
    print(dic.pop('hobby','没有这个数'))   #结果是:没有这个数

    (2)clear():请空

    (3)popitem():在python3.6之前,是随机删除一个键值对;从python3.6开始,删除最后一个键值对

    (4)del:

        ① 按照键删除,del dic['name']

                  ② 从内存上清空 del dic

    3、改(两种方法)

    (1)通过键和=进行修改,与增的用法相同

    (2)update():

              dic1.update(dic2):将dic2中的所有键值对覆盖并添加到dic1中(键相同的覆盖,键不同的添加)

      例如:

    dic1 = {'name':'helen','age':18,'sex':'women'}
    dic2 = {'name':'Amy','age':18,'bobby':'swimming'}
    dic1.update(dic2)
    print(dic1)
    
    结果是:
    {'name': 'Amy', 'age': 18, 'sex': 'women', 'bobby': 'swimming'}

    4、查(2种方法)

    (1)通过键进行查询(与列表通过索引进行查询相似)

    dic = {'name':'helen','age':18,'sex':'women'}
    str1 = dic['name']    #通过键查询到value
    print(str1)
    
    结果是:helen

    (2)get(k,None):字典种有这个key的返回这个key对应的value,没有的话返回第二参数,第二参数可以不写,默认返回None

    dic = {'name':'helen','age':18,'sex':'women'}
    str1 = dic.get('name')
    print(str1)          #有这个key,返回这个key对应的value值
    str2 = dic.get('hobby')
    print(str2)          #没有这个key,第二参数为空,返回None
    str3 = dic.get('hobby','没有这个键')
    print(str3)           #没有这个key,有第二参数,返回第二参数

    三、字典的三种特殊使用方法(.keys()/.values()/.items())

    1、dic.keys()

    ① 用于提取字典种的key值,返回值的类型是 dict_keys

    ② 提取字典中的key值,并将其转化为列表     list(dic.keys())

    ③ 与for结合使用:输出的就是字典里的key(按原来的数据类型)

    dic = {'name':'helen','age':18,'sex':'women'}
    print(dic.keys(),type(dic.keys()))   #使用①
    li = list(dic.keys())
    print(li)         #使用②
    for i in dic.keys():     #使用③
        print(i)
    
    输出结果是:
    dict_keys(['name', 'age', 'sex']) <class 'dict_keys'>
    ['name', 'age', 'sex']
    name
    age
    sex

    2、dic.values()

    ① 用于提取字典种的value值,返回值的类型是 dict_values

    ② 提取字典中的value值,并将其转化为列表     list(dic.values())

    ③ 与for结合使用:输出的就是字典里的value(按原来的数据类型)

    dic = {'name':'helen','age':18,'sex':'women'}
    print(dic.values(),type(dic.values()))   #使用①
    li = list(dic.values())
    print(li)         #使用②
    for i in dic.values():     #使用③
        print(i)
    
    输出结果是:
    dict_values(['helen', 18, 'women']) <class 'dict_values'>
    ['helen', 18, 'women']
    helen
    18
    women

    3、dic.items()

    ① 用于提取字典种的key和value值,并将key和它对应的value用元组包围起来,返回值的类型是 dict_items

    ② 提取字典中的key和value值,并将其转化为列表     list(dic.items()),其中key和它对应的value用元组包围起来[(key,value),(key,value),.....]

    ③ 与for结合使用:输出的就是字典里的key和value(按原来的数据类型)

        Ⅰ. for k,v in dic.items()  :输出原始格式的key和value

        Ⅱ. for i in dic.items()    :输出被元组包围的key和value

        Ⅲ. for i in dic()     :输出原始格式的key

    dic = {'name':'helen','age':18,'sex':'women'}
    print(dic.items(),type(dic.items()))   #使用①
    #输出结果是:dict_items([('name', 'helen'), ('age', 18), ('sex', 'women')]) <class 'dict_items'>
    li = list(dic.items())
    print(li)           #使用②
    #输出结果是:[('name', 'helen'), ('age', 18), ('sex', 'women')]
    for k,v in dic.items():
        print(k,v)
    #输出结果是:
    # name helen
    # age 18
    # sex women
    for i in dic.items():           
        print(i)   
    # 输出的结果是:
    # ('name', 'helen')
    # ('age', 18)
    # ('sex', 'women')
    for i in dic:
        print(i)
    # 输出结果是:
    # name
    # age
    # sex

    四、字典的嵌套

    dic = {'name_list': ['王双', 'alex', '孙飞', 'taibai'],
           1: {'name': 'taibai', 'age': 18, 'sex': ''},
           (1,2): [100, {'ip': '192.168.1.1', 'port': 3306}]
           }
    # 1,给 name_list对应的列表追加一个值: 司徒大人.
    dic['name_list'].append('司徒大人')
    print(dic)
    # 2,将name_lsit对应的alex 变成全部大写.
    dic['name_list'][1]=dic['name_list'][1].upper()
    print(dic)
    # 3, 将1对应的字典添加一个键值对: weight : 75
    dic[1]['weight'] = 75
    print(dic)
    # 4,将1 对应的字典的name键对应的名字taibai 换成alex
    dic[1]['name'] = 'alex'
    print(dic)
    # 5,将 {'ip': '192.168.1.1', 'port': 3306} 次字典的port键值对删除.
    dic[(1,2)][1].pop('port')
    print(dic)

    五、补充:分别赋值

    a,b=10,20                # a=10,b=10
    a,b=[10,20]              # a=10,b=10
    a,b=[(10,20),(30,40)]    # a=(10,20),b=(30,40)
    a,b=b,a                  #a和b交换值
  • 相关阅读:
    vue 解决 数组和对象数据画面不更新
    js 闭包
    php 后台登陆逻辑
    PHP tp3.2模型对数据进行多表查询
    简便的三级联动
    JQ三级联动的写法
    js 选项卡
    HTML DOM对象 获取各种类型的节点
    java script 日期对象Date()
    java script 算术对象
  • 原文地址:https://www.cnblogs.com/tian-tian/p/9445068.html
Copyright © 2020-2023  润新知