• 字典的常用操作


    >大纲

    • dict的介绍
    • dict的语法
    • dict的增删改查
    • dict的操作功能
    • dict的for循环
    • dict的嵌套
    • 解包,解构

    1.dict(字典)简介

    # 字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是
    # 唯⼀的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key-value保存在这个地址中.
    # 这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash的,
    # 如果你搞不懂什什么是可哈希, 暂时可以这样记, 可以改变的都是不可哈希的,
    # 已知的可哈希(不可变)的数据类型: int, str, tuple, bool(True,False)
    # 不可哈希(可变)的数据类型: list, dict, set
    # 那么可哈希就意味着不可变. 这个是为了能准确的计算内存地址⽽规定的.
    # 对于dict中value可以是所有,str,常量,list,int,tuple等.

    # ====================

    2.字典的语法

    # {key1: value1, key2: value2....}
    # dic = {"章子怡":"汪峰的老婆"}
    # print(dic)
    # # {'章子怡': '汪峰的老婆'}

    # ====================

    3.增加

    # # 方法一
    # dic ["baby"] = "黄晓明的老婆"
    # print(dic)
    # # {'章子怡': '汪峰的老婆', 'baby': '黄晓明的老婆'}
    # # 方法二
    # # 方法二
    # dic.setdefault("马蓉","王宝强的前妻")
    # print(dic)
    # # {'章子怡': '汪峰的老婆', 'baby': '黄晓明的老婆', '马蓉': '王宝强的前妻'}
    # # 特殊情况一
    # # 当添加的键已经存在字典中
    # dic ["baby"] = "漂亮"
    # print(dic)
    # # {'章子怡': '汪峰的老婆', 'baby': '漂亮', '马蓉': '王宝强的前妻'}    当key已经存在时,会吧以前的value替    
    # # 换成新value
    # # 特殊情况二
    # dic.setdefault("马蓉","张集的情人")
    # print(dic)
    # # {'章子怡': '汪峰的老婆', 'baby': '漂亮', '马蓉': '王宝强的前妻'}    当key已经存在时,不会再添加.
    # # 特殊情况三
    
    
    # dic ["name"] = ""
    # print(dic)
    # # {'章子怡': '汪峰的老婆', 'baby': '漂亮', '马蓉': '王宝强的前妻', 'name': ''}    当value为空时,增加的也是# # 空
    #
    #
    # dic.setdefault("age","")
    # print(dic)
    # # {'章子怡': '汪峰的老婆', 'baby': '漂亮', '马蓉': '王宝强的前妻', 'name': '', 'age': ''}     当value为空 
    # #  时,增加的也是空

    4.删除

     # 方法一

    # name_dict = {"name":"王剑威","age":"22","add":"HeBei"}
    # name_dict.pop("add")
    # print(name_dict)
    
    # {'name': '王剑威', 'age': '22'}
    # ret = name_dict.pop("add")
    # print(ret)
    # HeBei     pop删除的内容可以被变量接受,但是只会返回value.
    # 方法二
    # del name_dict["age"]
    # print(name_dict)
    # {'name': '王剑威', 'add': 'HeBei'}
    # 方法三
    # 随机删除
    # name_dict.popitem()
    # print(name_dict)
    # {'name': '王剑威', 'age': '22'}
    
    # ret = name_dict.popitem()
    # print(ret)
    # ('add', 'HeBei')  返回的key和value,并添加到元祖中
    
    

    5.修改

    # 方法一
    # name_dict = {"name":"王剑威","age":"22","add":"HeBei"}
    # name_dict["age"] = 30
    # print(name_dict)
    # {'name': '王剑威', 'age': 30, 'add': 'HeBei'}
    # 方法二 (此方法作为了解)
    # dic1 = {"阿里巴巴":"马云","京东":"刘强东","腾讯":"马化腾"}
    # dic2 = {"华三":"于英涛","阿里巴巴":"王剑威","华为":"everyone"}
    # dic1.update(dic2)
    # print(dic1)
    # # {'阿里巴巴': '王剑威', '京东': '刘强东', '腾讯': '马化腾', '华三': '于英涛', '华为': 'everyone'}
    # print(dic2)
    # # {'华三': '于英涛', '阿里巴巴': '王剑威', '华为': 'everyone'}
    #
    # # 从以上可以看看出是将dic2更新到了dic1中,但是再两个字典中存在重复的key,结果是将dic2的相同key的# # # value更新到了dic1

    6.查

    # # 方法一
    # dic1 = {"阿里巴巴":"马云","京东":"刘强东","腾讯":"马化腾"}
    # print(dic1.get("阿里巴巴"))
    # # 马云
    #
    # # 当查找的key为空时,返回None
    # print(dic1.get(""))
    # # None
    # # 方法二  setdefault除了可以添加还可以通过key查找value,但是需要变量接受,或者直接print
    # # 方法二  setdefault除了可以添加还可以通过key查找value,但是需要变量接受,或者直接print
    # dic1 = {"阿里巴巴":"马云","京东":"刘强东","腾讯":"马化腾"}
    # print(dic1.setdefault("腾讯"))
    # # 马化腾
    # setdefault功能完全讲解,除了增加,还能查找
    # # 下面这个例子,可以看出setdefault有两步,一是添加,当添加的这个key在dict中不存在时,会添加这个键值# # #  对,如果key存在时不添加
    # # 二然后根据添加的key去返回对应的value
    # dic1 = {"阿里巴巴":"马云","京东":"刘强东","腾讯":"马化腾"}
    # ret = dic1.setdefault("苏宁","ABC")
    # print(ret)
    # # ABC
    
    

    7.dict的常见方法

    # .keys()   返回字典中所有的key
    # dic1 = {"阿里巴巴":"马云","京东":"刘强东","腾讯":"马化腾"}
    # print(dic1.keys())
    # #dict_keys(['阿里巴巴', '京东', '腾讯'])    返回所有的key,但是输出到了一个类似列表的一个列表中,可以for循环
    # .values()     返回字典中所有的value
    # dic1 = {"阿里巴巴":"马云","京东":"刘强东","腾讯":"马化腾"}
    # print(dic1.values())
    # # dict_values(['马云', '刘强东', '马化腾'])     返回所有的value,但是输出到了一个类似列表的一个列表中,可以for循环
    # # .items()    返回所有的键值对
    # dic1 = {"阿里巴巴":"马云","京东":"刘强东","腾讯":"马化腾"}
    # print(dic1.items())     # 返回所有的键值对
    # # dict_items([('阿里巴巴', '马云'), ('京东', '刘强东'), ('腾讯', '马化腾')])
    # #  将返回的所有的键值放进一个列表,每一个键值对又被放进列表中的一个元组中,同样可以使用for
    
    

    8.字典的for循环

    # 字典本身就是一个可迭代的数据类型,所以可以进行for循环
    # dic1 = {"阿里巴巴":"马云","京东":"刘强东","腾讯":"马化腾"}
    # for n in dic1:
    #     print(n)
        # 阿里巴巴
        # 京东
        # 腾讯
    # 但是默认参加循环的时字典的key,所以会打印dic1的所有key
    #那么如何将字典的value通过for循环遍历呢,方法有很多.....
    # 方法一
    # dic1 = {"阿里巴巴":"马云","京东":"刘强东","腾讯":"马化腾"}
    # for n in dic1.values(): #.values()取到的就是字典的每一个value,所以直接遍历的就是value
    #     print(n)
        # 马云
        # 刘强东
        # 马化腾
    # 方法二
    # dic1 = {"阿里巴巴":"马云","京东":"刘强东","腾讯":"马化腾"}
    # for n in dic1:      #这里循环的是字典本身,但是前面学过如何单个的取出key对应的value,那就是下面的代码
    #     print(dic1[n])      #用字典加上key,输出的就是value,方法很多...
    #     print(dic1.get(n))
    #     print(dic1.setdefault(n))
        # 马云
        # 马云
        # 马云
        # 刘强东
        # 刘强东
        # 刘强东
        # 马化腾
        # 马化腾
        # 马化腾
    

      

    # ====================

    9.字典的嵌套

    # 现有如下字典
    superstart = {"name":"汪峰",
                  "age":44,
                  "wife":{"name":"章子怡",
                          "age":37,
                          "gongzi":{"一月":90000,
                                    "二月":120000,
                                    "三月":110000,
                                    "四月":160000}},
                  "chair":[{"name":"老大",
                            "age":8,
                            "gender":"男"},
                           {"name":"老二",
                            "age":10,
                            "gender":"女"}]}
    

      问题一:

    # 现在要求输出汪峰的第二个孩子是男孩还是女孩.
    # print(superstart.get("chair")[1]["gender"])
    

      问题二:

    # 输出汪峰老婆三月挣了多少钱?
    # print(superstart["wife"]["gongzi"]["三月"])
    
    

    10.今天新学一个解构, 记在这里

    # 定义两个变量,两个值
    # a = 1
    # b = 2
    # print(a,b)
    # 结果:1 2
    # 解包之后
    # a,b = (1,2)
    # print(a,b)
    # 结果:1 2
    

      

  • 相关阅读:
    DVD X Player 5.5 PRO
    Freefloat FTP Server 1.0漏洞分析
    基于约束的SQL攻击
    Commons-Collections漏洞
    Code-Audit-Challenges-php-2
    GSM Sniffer环境--c118+osmocombb
    XXE (XML External Entity Injection) :XML外部实体注入
    hyperledger fabric学习(1)
    zero to one (4)
    zero to one (3)
  • 原文地址:https://www.cnblogs.com/594504110python/p/9273359.html
Copyright © 2020-2023  润新知