• 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交换值
  • 相关阅读:
    hdu 4002 Find the maximum
    hdu 2837 坑题。
    hdu 3123
    zoj Treasure Hunt IV
    hdu 2053 Switch Game 水题一枚,鉴定完毕
    poj 1430 Binary Stirling Numbers
    hdu 3037 Saving Beans
    hdu 3944 dp?
    南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
    fzu 2171 防守阵地 II
  • 原文地址:https://www.cnblogs.com/tian-tian/p/9445068.html
Copyright © 2020-2023  润新知