• 03-字典


    字典是另一种可变容器模型,且可存储任意类型对象。

    字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,分割,整个字典包括在花括号{}中 。

    1.字典的增删改查

    1.增
    1. 通过 字典名["键"] = "值"来添加:
    dic = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}   
    dic["德邦"] = "赵信"
    print(dic) # {'草丛伦': '大宝剑', '易大师': '剑圣', '剑豪': '压缩', '德邦': '赵信'}
    

    注意:如果添加的键在原字典中已经存在,那么就是更新这个键所对应的值;如果添加的键在字典中没有,那么才是在字典中添加一个新的键值对。

    2. dict.setdefault("键","值")
    dic = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}   
    dic.setdefault("火女","安妮")
    print(dic)  # {'火女': '安妮', '草丛伦': '大宝剑', '剑豪': '压缩', '易大师': '剑圣'}
    

    该方法也可以进行查询。

    如果没有对应的key,则返回None

    2.删
    1. dict.pop(key):
        参数解析:
            key:将要删除的键值对中的键。
        该方法需要传入一个字典中的键,然后对应删除这个键在字典中的所代表的的键值对。
        注意:这个方法 会将被删除的键值对中的值返回。
        
        注意:如果删除的键值不在字典中,该方法会抛出KeyError异常。
        
        dic1 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
        ret = dic1.pop("易大师")
        print(ret)      # 剑圣
        print(dic1)     # {'剑豪': '压缩', '草丛伦': '大宝剑'}
    
    
    2. del dict[key]:
        删除。
        参数解析:
            key:字典中的键。
        该方法同样需要传入一个字典中的键。
        这个方法没有返回值。
        
        注意:如果删除的键值不在字典中,该方法会抛出KeyError异常。
        
        dic1 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
        del dic1["剑豪"]
        print(dic1)     # {'易大师': '剑圣', '草丛伦': '大宝剑'}
    
    3.改
    1. 通过 字典名["键"] = "值"​来修改:
        如果键在字典中已经存在,那么则是修改键对应的值;如果不在字典中,那么则是添加键值。
        dic1 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
        dic1["草丛伦"]  = "盖伦"
        print(dic1)     # {"易大师":"剑圣","剑豪":"压缩","草丛伦":"盖伦"}
    
    
    2. dic1.update(dic2):
        将字典dic2中的键值更新到字典dic1中。
        dic1 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
        dic2 = {"剑圣":"易大师","维恩":"VN"}
        dic1.update(dic2)
        print(dic1)     # {'草丛伦': '大宝剑', '剑圣': '易大师', '维恩': 'VN', '易大师': '剑圣', '剑豪': '压缩'}
    
    
    3. dic.clear():
        清空字典。
        dic = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
        dic.clear()
        print(dic)      # {} 清除之后是一个空字典
    
    
    4.查询
    1. 通过for循环来查。默认查询出来的是值:
        dic = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
        for i in dic:
            print(i)  # 剑豪  草丛伦   易大师
        
    2. dic.setdefault(key):
        根据传递的字典中的键,进行查询。
        如果在字典中存在查询的键,那么返回这个键对应的值;
        如果在字典中不存在查询的键,那么返回None
        
        dic3 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
        print(dic3.setdefault("剑豪"))          # 压缩
        print(dic3.setdefault("影流之主")       # None
    
    3. 通过键值来查询:
        类似于字符串或是列表中的切片取值。根据传递的键名,来取键对应的值。
        
        注意:如果要取的键在字典中不存在,那么会抛出异常。
        
        dic3 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
        print(dic3["易大师"])       # 剑圣
    
    4. dict.get(key[,index]):
        参数解析:
            key:传入的某个键名。
            index:可选参数,如果获取的键不在字典中,那么返回index。
        该方法如果查询到键在字典中存在,那么会返回键对应的值;如果键不存在字典中,那么返回None,或者返回传入的返回值index。
        
        dic3 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
        print(dic3.get("易大师"))                   # 剑圣
        print(dic3.get("易大师傅","没有这个键"))    # 没有这个键
    

    2.字典的操作

    1. dict.keys()

    获取字典中的全部键。返回的是一个由字典中的全部键组成的列表。

    dic4 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"
    
    print(dic4.keys())  # dict_keys(['易大师', '草丛伦', '剑豪']) 这个列表也是可以进行迭代的。
    
    2. dict.values()

    获取字典中的全部value,返回由这些value组成的一个高仿列表。

    dic4 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
    # 获取全部的值
    print(dic4.values()) # dict_values(['压缩', '大宝剑', '剑圣'])
    
    3. dict.items()

    获取的是字典中每一个键值对所组成的元组。该方法通常用来进行对字典数据的解包。

    dic4 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
    
    print(dic4.items())     # dict_items([('草丛伦', '大宝剑'), ('易大师', '剑圣'), ('剑豪', '压缩')])
    
    dic4 = {"易大师":"剑圣","剑豪":"压缩","草丛伦":"大宝剑"}
    # 解构
    for a,b in dic4.items():
        print(key, value)
        # Tom
        # 易大师 剑圣
        # 剑豪 压缩
        # 草丛伦 大宝剑
        # 姓名 Tom
    
    

    字典练习

    # 1. 将字符串转化为对应的字典:"易大师:剑圣|剑豪:压缩|草丛伦:大宝剑"
    s = "易大师:剑圣|剑豪:压缩|草丛伦:大宝剑"
    # 1.先将字符串用"|"分割
    new_s = s.split("|")
    print(new_s)
    dic = {}
    # 2.对分割出来的字符串进行循环,并使用解构将其中的数据分别解析出来并赋值
    for i in new_s:
        # 3.再次进行分割
        k,v = i.split(":")
        # 4.赋值给字典中的键值
        dic[k] = v
    print(dic)   # {'剑豪': '压缩', '草丛伦': '大宝剑', '易大师': '剑圣'}
    
    
    # 2. 一个列表,将其中大于66的值添加到字典中k1键中的值,将小于66的数据添加到字典中k2的值
    list = [11,22,33,44,55,66,77,88,99]
    dic1 = {"k1":[],"k2":[]}
    for i in list:
        if i == 66:
            continue
        elif i > 66:
            dic1.gete("k1").append(i) # 查询出k1键对应的值,并向其中添加内容
        elif i < 66:
            dic1.get("k2").append(i)
    print(dic1)  # {'k2': [11, 22, 33, 44, 55], 'k1': [77, 88, 99]}
    
    # 3. 电影投票:给每个电影进行投票,最后以字典的形式显示出来
    pitcure_list = ["解决吾先生","美国往事","西西里的美丽传说","变形金刚"]
    dic2 = {}
    for film in pitcure_list:
        fen = input("请给'{}'打分:".format(film))
        dic2[film] = fen
    print(dic2) # {'变形金刚': '8', '西西里的美丽传说': '7', '解决吾先生': '5', '美国往事': '6'}
    
    
    # 4. 车牌区域匹配:根据车牌信息,分析各省的车牌数量
    cars = ["豫A12345","豫B12345","豫A12346","沪A12345","沪B12345","黑A12345"]
    locals = {"豫":"河南","沪":"上海","黑":"黑龙江"}
    result = {}
    for car in cars:
        province_Abbreviation = car[0]                  # 省份缩写
        # print(province_Abbreviation)
        province = locals[province_Abbreviation]        # 省份
        if result.get(province) == None:
            result[province] = 1
        else:
            result[province] += 1
    print(result)   # {'上海': 2, '河南': 3, '黑龙江': 1}
    
  • 相关阅读:
    可变性编程 不可变性编程 可变性变量 不可变性变量 并发编程 命令式编程 函数式编程
    hashable
    优先采用面向表达式编程
    内存转储文件 Memory.dmp
    windows update 文件 路径
    tmp
    查询局域网内全部电脑IP和mac地址等信息
    iptraf 网卡 ip 端口 监控 netstat 关闭端口方法
    Error 99 connecting to 192.168.3.212:6379. Cannot assign requested address
    t
  • 原文地址:https://www.cnblogs.com/Pilaoban/p/13068617.html
Copyright © 2020-2023  润新知