Python札记7_字典2

作者: 皮皮大 | 来源:发表于2019-06-17 18:49 被阅读1次

    在上一篇文章 Python札记6_字典1
    中主要讨论了字典的创建、访问以及如何利用字典进行格式化输出,本文中主要讲解字典的各种方法。


    copy:浅拷贝
    copy就是复制,但是在Python中复制并不是那么地简单。对象有类型,变量无类型变量其实就是一个标签,使用id()查询对象在内存中位置。

    ab = {'python': 'language', 'city': 'shenzhen', 'code': '101'}
    cd = ab
    ef = ab.copy()
    print(id(ab))   
    print(id(cd))    # cd 和 ab 在内存中同一个对象贴上了不同的标签;改变cd不会影响ab
    print(id(ef))    # ef 和 ab 内存地址不同,cd在内存中开辟了另一个空间
    
    2846288332768   # ab
    2846288332768   # cd
    2846287021040   # ef
    

    deepcopy:深拷贝
    要理解深拷贝需要导入copy模块来实现

    import copy
    x = {'language': ['python', 'html'], 'city': 'shenzhen'}
    y = copy.deepcopy(x)
    print(id(x))
    print(id(y))
    
    # 结果:内存地址不同
    2524451325920
    2524451324120
    
    x['language'].remove('html')  #删除x中的元素不会影响y
    print(x)
    print(y)
    
    # 结果
    {'language': ['python'], 'city': 'shenzhen'}
    {'language': ['python', 'html'], 'city': 'shenzhen'}
    

    结论:通过深拷贝,得到是两个不同的对象,内存地址不同,改变其中一个不会影响另一个。


    函数 作用
    clear 清空字典中元素,属于原地修改,无返回值
    dict.clear()只是变成了空字典,内存中仍然存在
    del 方法是全部删除,内存就没有了
    get 获取某个键key的值value:dict.get(k, [,d])键不存在返回指定的值d
    setdefault 类似get方法,如果键不存在,返回指定的值,并在字典中增加这个键值对;如果不指定返回值,默认是None
    ab = {'language': 'python', 'city': 'shenzhen', 'code': '101'}
    print(ab.get("language"))
    print(ab['language'])     # 当键存在时,二者作用相同
    print(ab.get('number'))   # 返回的是None,但是原来的字典不变
    # print(ab['number'])    报错
    print(ab.get('number', '1234'))  # 返回值是1234,但是原来的字典不变
    print(ab.setdefault('number', '1234'))  # 返回值是1234,并且原来的字典添加了键值对'number':'1234'
    
    # 执行setdefault()后的结果
    {'language': 'python', 'city': 'shenzhen', 'code': '101', 'number': '1234'}
    
    

    关于dict['key']、get()、setdefault()方法的总结:

    • 若键存在,三者作用效果相同
    • 若键不存在,通过dict['key']访问报错,另外两种不报错,返回的是None
    • 对于get()setdefault(),如果指定了返回值,则返回该值,不指定返回值为None;
    • 上条结论的基础上,get()不改变原来的字典;setdefault()执行之后会增加键值对。

    关于键值对、键、值的获取主要用到的是items()、keys()、values()三种方法,三种方法得到的结果都能够用for进行遍历,获取单个元素:

    函数 作用
    items 获取键值对
    keys 获取所有的键
    values 获取所有的值
    dic = {'language':'python', 'city': 'shenzhen'}
    print(dic.items())
    print(type(dic.items()))
    for key, value in dic.items():
        print(key, value)
    print(dic.keys())
    for value in dic.values():   # 用for循环进行遍历
        print(value)
    
    image.png

    若想得到字典中的键或者值,有两种方法:

    • 通过items()进行获取
    • 通过keys()或者values()直接获取

    相关文章

      网友评论

        本文标题:Python札记7_字典2

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