zoukankan      html  css  js  c++  java
  • 字典

    字典

    定义

    字典 -- dict

    字典是无序的,可变的数据类型

    字典:用于存储数据,存储大量数据,字典要比列表快,将数据和数据之间进行关联

    定义一个字典:

    dic = {"常鑫":10,"李文虎":80,"张宇":100}
    字典中逗号分隔叫做一个元素"常鑫"(键):10(值) -- 键值对
    
    dic = {"常鑫":10,"李文虎":80,"张宇":100,10:"大黑哥",True:123,(1,2,3):"大煎饼",[1,2]:"meet"}
    print(dic)
    

    字典的键:

    可哈希的 --- 不可变的数据类型 --- 避免哈希冲突使用了 开放寻址法

    不可哈希的 --- 可变的数据类型

    要求唯一 --- 如果有重复的后边值的将前面的值覆盖

    字典的值:

    可以任意

    字典的增,删,改,查

    增:

    dic = {"常鑫":10,"李文虎":80,"张宇":100}
    dic["李文虎"] = 89       
    print(dic)               # dic = {"常鑫":10,"李文虎":89,"张宇":100}
     # 暴力添加
    
    dic = {"常鑫":10,"李文虎":80,"张宇":100}
    dic.setdefault("大黑哥",50)      
    print(dic)   # {'常鑫': 10, '李文虎': 80, '张宇': 100, '大黑哥': 50}
    # "大黑哥"这个键去字典查询,没有就添加,有就不执行添加.
    

    删除:

    dic = {"常鑫":10,"李文虎":80,"张宇":100}
    del dic["常鑫"]
    prin(dic)                # {'李文虎': 80, '张宇': 100}
    # 通过字典的键删除键值对
    
    dic = {"常鑫":10,"李文虎":80,"张宇":100}
    print(dic.pop("常鑫"))           # 10
    print(dic)                      # {'李文虎': 80, '张宇': 100}
    # 通过字典的键进行删除键值对 返回值:返回的是删除的值
    
    dic = {"常鑫":10,"李文虎":80,"张宇":100}
    dic.clear()
    print(dic)            #{}
    # 清空
    

    改:

    dic = {"常鑫":10,"李文虎":80,"张宇":100}
    dic["常鑫"] = "dsb"
    print(dic)             # {'常鑫': 'dsb', '李文虎': 80, '张宇': 100}
    # 字典中没有某个键值对的时候就是添加,当键在字典中存在的时候就是修改
    # 有则改,无则加
    
    dic = {"常鑫":10,"李文虎":80,"张宇":100}
    dic.update({"常鑫":50,"张宇":30})
    print(dic)            # {'常鑫': 50, '李文虎': 80, '张宇': 30}
    # update括号中的字典级别高于update前面的字典
    

    查:

    dic = {"常鑫":10,"李文虎":80,"张宇":100}
    for i in dic:
        print(i)
        # 常鑫
        # 李文虎
        # 张宇
    #循环获取的是字典中每个键值对的键
    
    dic = {"常鑫":10,"李文虎":80,"张宇":100}
    print(dic.get("李文虎"))     # 80
    # 通过键获取值,如果将不存在字典中返回None
    
    print(dic["ck"])            # 报错
    # 通过键获取值,如果将不存在字典中报错
    

    其他操作

    dic = {"1":3,"5":9,"李文虎":100}
    for i in dic:
        print(i,dic.get(i))             
    # 1 3
    # 5 9
    # 李文虎 100
    # 获取字典中所有的键和值
    
    dic = {"1":3,"5":9,"李文虎":100}
    print(dic.keys())       # dict_keys(['1', '5', '李文虎'])
    # 高仿列表 -- dict_keys(['1', '5', '李文虎']) 支持for循环 不支持索引
    
    dic = {"1":3,"5":9,"李文虎":100}
    for i in dic.keys():
         print(i)                   # 1
                                    # 5
                                    # 李文虎
    # 获取字典中所有的键
    
    dic = {"1":3,"5":9,"李文虎":100}
    lst = []
    for i in dic:
        lst.append(dic[i])
    print(lst)                       #[3, 9, 100]
    # 获取字典中所有的值
    
    print(list(dic.values()))        #[3, 9, 100]
    # 获取字典中所有的值
    
    dic = {"1":3,"5":9,"李文虎":100}
    print(dic1.items())
    # dict_items([('1', 3), ('5', 9), ('李文虎', 100)])
    
    dic = {"1":3,"5":9,"李文虎":100}
    for i in dic.items():
        print(i[0],i[1])           # 1 3
                                   # 5 9
                                   # 李文虎 100
    

    解构

    a,b = 10,12
    print(a)
    print(b)                 # 10  
                             # 12
        
        
    a = 10
    b = 20
    a,b = b,a
    print(a,b)               # 20 10
                               
    a,b = [1,2]
    print(a,b)               # 1 2
    
    a,b = (3,4)
    print(a,b)               # 3 4
    
    a,_,b = (3,4,5)
    print(a,b)               # 3 5  等号后边的值和前面的变量名要一一对应
    
    a = 10,12               
    print(a)                 # (10,12)  本质就是一个元组
    
    a,b = "23"
    print(a,b)               # 2 3
    
    a,b = {"1":"a","2":"b"}
    print(a,b)               # 1 2 
    
    dic = {"1":3,"5":9,"李文虎":100}
    for i in dic.items():
        print(i)             # ('1', 3)
                             # ('5', 9)
                             # ('李文虎', 100)
                
    dic = {"1":3,"5":9,"李文虎":100}
    for k,v in dic.items():
        print(k,v)           # 1 3
                             # 5 9
                             # 李文虎 100
    # 获取每个元素的键和值
    

    字典的嵌套

    dic = {1001:["周杰伦","林俊杰"],
           1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
           1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
           1004:{"韦小宝":[{"教主夫人":["教主"]},{"阿珂":"刺客"},{"双儿":"天地会"}, {"爱心觉罗建宁":"公主"}, {"独臂神尼":{"韦小宝师父":{"兰陵王":"隐身"},"花木兰":[ "唧唧复唧唧","木兰是战士",{"爸爸":["花和尚"]}]}}, {"陈圆圆":"丈母娘"},{"穆建平":"小郡主"}]},
           1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]}
           }
    
    	找到"教主"
        print(dic[1004]["韦小宝"][0]["教主夫人"][0])
        找到"井盖"
        print(dic[1005]["常鑫"][-1])
        找到"熊二"
        print(dic[1002]["汪峰"]["前妻2"][-1])
        找到"隐身"
        print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])
        找到"花和尚"
        print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])
    
  • 相关阅读:
    数论&数学中结论证明
    「Uva11401」数三角形
    「CJOJ2725」Wave
    「CJOJ2724」Number
    「CJOJ2723」Reserve
    「CJOJ2722」Ping
    「CJOJ2573」Snake vs Block
    「CJOJ2574」Lucky Transformati
    「CJOJ2721」取石块儿
    「CJOJ2366」机器人采集金属
  • 原文地址:https://www.cnblogs.com/beichen123/p/11166561.html
Copyright © 2011-2022 走看看