• python基础


    一、字典 dict

    1.字典初识

    why:

            列表的缺点:

                1,列表如果存储的数据比较多,那么他的查询速度相对慢。

                2,列表存储的数据关联性不强。

        what: python基础数据类型之一:字典。

            python中唯一的映射类的数据,花括号{}括起来,他是以键值对形式存储,每一对键值对以逗号隔开的。

            {'name': '太白金星', 'age': 18, 'sex': 'man'}

            ps:

                数据类型的划分:

                    容器非容器划分:

                        容器型数据类型:list,tuple,dict,set。

                        非容器型数据类型:int str bool

                    可变与不可变划分:

                        可变(不可哈希hash)的数据类型:list dict,set

                        不可变(可哈希hash的)的数据类型: int bool str tuple

                                            对数据本身变化:

                                            i = 100

                                            i = 90

                                            print(i)

            字典是以键值对形式存储的,

            键:不重复的,唯一的,键的数据类型必须是不可变的数据类型。

            值:任意数据类型,对象。

            字典可以存储大量的键值对数据,

            python3.5包括3.5之前:字典是无序的。

            python3.6之后,字典变成有序的。

            字典的优点:

                1,字典存储大量的关系型数据。

                2,字典的查询速度非常快。

           缺点: 占用空间比较大

        how:

        where:

    2. 字典的常用操作方法

         例:    dic = {    'name': 'xiaoxu', 'age': 23, 'hobby': 'sing'} 

             (1)增

    dic = {    'name': 'xiaoxu', 'age': 23, 'hobby': 'sing'}
    #(1)直接增加,有则替换,无则增加
    dic['hight'] = 173
    print(dic)
    dic['age'] = 22
    print(dic)
    #(2)dic.setdefault  有则不变,无则增加
    # dic.setdefault('weight')   #{'name': 'xiaoxu', 'age': 22, 'hobby': 'sing', 'hight': 173, 'weight': None}
    dic.setdefault('weight',120) #{'name': 'xiaoxu', 'age': 22, 'hobby': 'sing', 'hight': 173, 'weight': 120}
    dic.setdefault('name','帅哥')#{'name': 'xiaoxu', 'age': 22, 'hobby': 'sing', 'hight': 173, 'weight': 120}
    print(dic)
    View Code

            (2) 删

    dic = {    'name': 'xiaoxu', 'age': 23, 'hobby': 'sing'}
    #(1)pop 按照键删除  有返回值
    # dic.pop('age')    # 按照键删除掉键值对
    # print(dic)        #{'name': 'xiaoxu', 'hobby': 'sing'}
    # dic.pop('age1')
    # print(dic)      #没有‘age1’,会报错
    # dic.pop('age1',None)      # 设置两个参数,第二个参数是提示语 一般设置成None
    # print(dic)                #有返回值,不会报错
    #(3)clear  清空
    # dic.clear()
    # print(dic)              #{}
    #(4)popitem  (随机删除然后返回)但3.6版本之后就是删除最后一个键值对
    # dic.popitem()
    # print(dic)      #{'name': 'xiaoxu', 'age': 23} 删掉了 hobby :sing
    #(5) del
    # del dic['name']    # 按照键删除
    # print(dic)         #{'age': 23, 'hobby': 'sing'}
    # del dic['name1']
    # print(dic)           #会报错,所以按照键删除,用 pop。
    # del  dic      #删除字典
    # print(dic)    #NameError: name 'dic' is not defined
    View Code

           (3)改

     dic = {    'name': 'xiaoxu', 'age': 23, 'hobby': 'sing'}   
    #(2)update 添加
    # dic.update(car='逍客', money=1300)
    # print(dic)
    dic = {"name": "jin", "age": 18, "sex": "man"}
    dic2 = {"name": "alex", "weight": 75}
    dic2.update(dic)   # 将dic里面的键值对覆盖添加到dic2中
    print(dic)         # {'name': 'jin', 'age': 18, 'sex': 'man'}
    print(dic2)        # {'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'man'}
    View Code

            (4)查

    # (1)按照键查
    print(dic['age'])
    print(dic['age1'])  #没有会报错
    # (2)get
    print(dic.get('age'))
    print(dic.get('age1'))   #没有输出   None
    print(dic.get('age1', '没有此键'))    #可以设置返回值   输出结果 : “没有此键”
    View Code

             (5)

             dic.keys()      输出键   #输出结果是 类似于list的容器类类型

    dic = {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    dic.keys()     
    ret = dic.keys()
    print(ret, type(ret))  #dict_keys(['name', 'age', 'hobby']) <class 'dict_keys'>
    for key in ret:
        print(key)     #结果 :name  age  hobby
    
    print(ret[0])    #报错,key 没有索引   TypeError: 'dict_keys' object does not support indexing。
    # 可以转化成list
    print(list(ret))
    View Code

              dic.values()   输出值

    dic = {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    dic.values()  
    print(list(dic.values()))
    for v in dic.values():
        print(v)
    
    #可以转换list
    print(list(dic.values()))
    View Code

            dic.items()    输出键值对

    dic = {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    c.items()   
    print(dic.items())
    print(list(dic.items()))
    
    for i in dic.items():
        print(i)
    View Code

          (6)分别赋值

    a, b = (1, 2)
    print(a,b)
    a, b= (1, 2, 3)   # 必须一一对应
    print(a,b)   # 报错     ValueError: too many values to unpack (expected 2)
    a, b, c = (1, 2, 3)
    print(a,b,c)
    a, b = 100, 1000
    a, b = [100, 1000]
    a, b = {'name':'alex', 'age': 73}
    print(a,b)      #只会输出键    name age
    View Code

           例:面试题 

                              a = 18

                              b = 32

                             通过一行代码 将a,b的值互换。

    a = 18
    b = 32
    a, b = b, a
    print(a,b)
    View Code

       

    dic = {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    print(dic.items())
    for k,v in dic.items():
        '''
        k,v =     ('name', '太白金星')
        k,v =     ('age', 18)
        k,v =     ('hobby', 'wife')
        '''
        print('这是键:', k)
        print('这是值:', v)
    View Code

    3.列表的嵌套

       例  :

    dic = {

        'name_list': ['博哥', '菊哥', 'b哥', 'alex'],

        'barry': {

            'name': '太白金星',

            'age': 18,

            'hobby': 'wife',

        }

    }

      1,给这个列表['博哥', '菊哥', 'b哥', 'alex'] 追加一个元素 '老男孩'。

    dic = {
        'name_list': ['博哥', '菊哥', 'b哥', 'alex'],
        'barry': {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    }
    l1 = dic['name_list']
    # print(l1)
    l1.append('老男孩')
    print(dic)
    View Code
    dic = {
        'name_list': ['博哥', '菊哥', 'b哥', 'alex'],
        'barry': {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    }
    dic['name_list'].append('老男孩')
    print(dic)

    2,将这个列表['博哥', '菊哥', 'b', 'alex']中的alex变成首字母大写。

    dic = {
        'name_list': ['博哥', '菊哥', 'b哥', 'alex'],
        'barry': {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    }
    print(dic['name_list'][-1].capitalize())
    dic['name_list'][-1] = dic['name_list'][-1].capitalize()
    print(dic)
    View Code

    3,将这个键值对 'name': '太白金星' 的 '太白金星' 改成男神。

    dic = {
        'name_list': ['博哥', '菊哥', 'b哥', 'alex'],
        'barry': {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    }
    print(dic['barry'])
    dic['barry']['name'] = '男神'
    print(dic)
    View Code

    4,给barry对应的小字典增加一个键值对: weight: 160

    dic = {
        'name_list': ['博哥', '菊哥', 'b哥', 'alex'],
        'barry': {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    }
    dic['barry']['weight'] = 150
    print(dic)
    View Code
  • 相关阅读:
    算法题---最长公共前缀
    算法练习题---罗马数字转int
    算法练习题---原地删除数组元素
    获取当前服务的IP和端口号
    算法练习题---回文数
    Java数学表示式解析工具- jeval
    Redis的安装与部署
    Centos开机自启动redis
    Java 7 的 7 个新的 “酷” 特性
    java7新特性——使用ThreadLocalRandom产生并发随机数
  • 原文地址:https://www.cnblogs.com/Xiao_Xu/p/10483020.html
Copyright © 2020-2023  润新知