• (三)字典


    字典内置函数&方法

     dict.fromkeys([seq], val):创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值

    v = dict.fromkeys(["k1",123,"999"],'aa')
    print(v)

    结果:{'999': 'aa', 'k1': 'aa', 123: 'aa'}

    dict.get(key, default=None):返回指定键的值,如果值不在字典中返回default值(默认为None)

    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    print(dic.get('k1',123))
    print(dic.get('k3'))
    print(dic.get('k3',1111111))

    结果:v1 None 1111111

    直接用索引取值的方式,没有指定键的值就会报错

    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    print(dic['k3'])

    结果:KeyError: 'k3'

    pop(key,default):删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出,如果值不在字典中返回default值。

    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    v = dic.pop('k1',123)
    print(dic,v)
    v = dic.pop('k3',900)
    print(dic,v)

    结果:{'k2': 'v2'} v1
    {'k2': 'v2'} 900

    popitem():随机返回并删除字典中的一对键和值。

    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    k,v = dic.popitem()
    print(dic,k,v)

    结果:{'k2': 'v2'} k1 v1

    dict.setdefault(key, default=None):设置值。如已存在,不设置,获取当前key对应的值;如不存在,设置,获取当前key对应的值 。

    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    v = dic.setdefault('k1',200)
    print(dic,v)
    v = dic.setdefault('k3',200)
    print(dic,v)

    结果:{'k2': 'v2', 'k1': 'v1'} v1
       {'k3': 200, 'k2': 'v2', 'k1': 'v1'} 200

    dict.update(dict2):把字典dict2的键/值对更新到dict里。存在的就替换,不存在的就添加。

    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    dic.update({'k1': '111111','k3': 123})
    print(dic)
    dic.update(k3=345,k5="asdf")
    print(dic)

    结果:{'k2': 'v2', 'k1': '111111', 'k3': 123}
       {'k5': 'asdf', 'k2': 'v2', 'k1': '111111', 'k3': 345}

    dict.keys()   dict.values()   dict.items():以列表返回一个字典所有的键/值/键值对,主要用于遍历与循环

    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    for k,v in dic.items():
        print(k,v)

    结果:k2 v2
       k1 v1
    dic = {
        "k1": 'v1',
        "k2": 'v2'
    }
    v = 'k1' in dic
    print(v)
    v = 'v1' in dic.values()
    print(v)

    结果:True
       True

    数据类型总结

    可变不可变:

    python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

    a = [1]
    b = [1]
    print(id(a),id(b))
    
    a,b = 1,1
    print(id(a),id(b))

    结果:11793288 11794696
       491507440 491507440

    根据可变数据类型与不可变数据类型的概念,只需要在改变value值的同时,使用id()函数查看变量id值是否变化就可以知道这种数据类型是可变的还是不可变的了。

    可变数据类型:列表,字典

    可变数据类型:字符串,数字,元组

    访问顺序:

    直接访问:数字

    顺序访问:字符串,列表,元组(有序的,下标和切片的方式)

    映射访问:字典(无序的,比顺序访问效率高,但是更耗内存)

    存放元素个数:

    容器类型:列表,元组,字典(多个元素)

    原子类型:数字,字符串(单个元素)

  • 相关阅读:
    Java StringBuilder、基本类型的包装类
    立个Flag不学好PHP誓不罢休
    LAMP搭建 转
    CentOS使用yum源中自带的rpm包安装LAMP环境
    CentOS RedHat YUM 源扩展补充(32位、64位均有)
    解决phpmyadmin上传文件大小限制的配置方法
    lanmp v2.5一键安装包发布(包括lamp,lnmp,lnamp安装)
    图像处理 jpg png gif svg
    NAT模式/路由模式/全路由模式 (转)
    网页制作中绝对路径和相对路径的区别
  • 原文地址:https://www.cnblogs.com/xulan0922/p/9100109.html
Copyright © 2020-2023  润新知