zoukankan      html  css  js  c++  java
  • 字典的增删查改

    字典

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

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

    定义一个字典

    dic = {"常鑫":10,"李文虎":80,"张宇":90,10:"大黑哥"}
    

    字典中逗号分隔是一个元素 "常鑫" (键) : 10 (值) 键值对应

    字典的键

    1. 必须是可哈希的—— 不可变的数据类型(列表不可以)——避免哈希冲突,使用了开放寻址法

    2.不可哈希———可变的数据类型

    3.要求唯一,如果有重复的后面的将前面的值覆盖

    • 字典的值可以任意

      (通过键去查)

      1.暴力添加

    dic = {"有":[1,2,3]}
    dic["李文虎"] = 89    结果:{'有': [1, 2, 3], '李文虎': 89}
    
    
    • 李文虎这个键去字典进行查询,如果不存在执行添加,如果存在就不添加了
    有:
    dic = {"有":[1,2,3],"李文虎":89}
    dic.setdefault("李文虎",100)     结果:  dic = {"有":[1,2,3],"李文虎":89}
    
    没有:
    dic = {"有":[1,2,3],}
    dic.setdefault("李文虎",100)     结果:{'有': [1, 2, 3], '李文虎': 100}
    
    
    1. dic.setdefault()
    dic = {"有":[1,2,3],"李文虎":89}
     print(dic.setdefault("李文虎"))
    #结果 89   
    
    只有两种格式  
    
    还有 None
    print(dic.setdefault("张宇")
    # None
    

    删除

    通过字典 的删除值对

    • del dic["键"]
    dic = {"有":[1,2,3],"李文虎":89}
    del dic["有"]
    print(dic)
    
    #结果     {'李文虎': 89}
    
    • dic.pop("键")

      dic = {"有":[1,2,3],"李文虎":89}
      dic.pop("有")
      print(dic)
      # 结果  {'李文虎': 89}
      

    dic.clear

    dic = {"有":[1,2,3],"李文虎":89}
    dic.clear()
    print(dic)
    
    
    # {}
    

    当键在字典中存在就是修改(暴力修改)

    dic = {"有":[1,2,3],"李文虎":89}
    dic["有"] = "dsb"
    print(dic)
    
    
    # {'有': 'dsb', '李文虎': 89}
    
    

    字典中没有某个键时就是添加

    dic = {"有":[1,2,3],"李文虎":89}
    dic["无"] = "dsb"
    print(dic)
    # {'有': [1, 2, 3], '李文虎': 89, '无': 'dsb'}
    

    dic.update("要更新的字典")

    括号里的级别高于 update 前面的字典 更新顾名思义就是将补充的填充到原来上面

    D = {'one': 1, 'two': 2}
    
    D.update({'three': 3, 'four': 4})  # 传一个字典
    print(D)
    
    D.update([('seven', 7), ('eight', 8)])  # 传一个包含一个或多个元祖的列表
    print(D)
    
    
    
    #{'one': 1, 'two': 2, 'three': 3, 'four': 4}
    {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'seven': 7, 'eight': 8}
    

    1. 利用 for 循环 (循环获取的每个字典中对应的键)

    2. dic = {"有":[1,2,3],"李文虎":89}
      for i in dic:
          print(i)
      
      #
      有
      李文虎
      

    dic.get()

    dic = {"有":[1,2,3],"李文虎":89}
    print(dic.get("李文虎"))          #通过键获取值,存在返回键中对应的值
    # 89
    
    dic = {"有":[1,2,3],"李文虎":89}
    print(dic.get("无"))             #不存在返回 None
    # None
    

    dic.get[]

    存在的话和上面的()一样,如果不存在就会报错
    

    其他操作

    dic.keys() 获取所有键,存放在高仿列表中,支持 for 循环,不支持索引.

    dic = {"有":[1,2,3],"李文虎":89}
    print(dic.keys())
    
    #  结果:  dict_keys(['有', '李文虎'])
    

    支持 for 循环

    dic = {"有":[1,2,3],"李文虎":89}
    for i in dic.keys():
        print(i)
    
    结果:
    有
    李文虎    类似于输出列表中的元素,  字典也可以
    

    不支持索引 直接报错

    dic = {"有":[1,2,3],"李文虎":89}
    print(dic.keys()[0])
    
    
    结果报错
    

    dic.values() 获取字典中所有的值

    dic = {"有":[1,2,3],"李文虎":89}
    print(dic.values())
    
    
    #dict_values([[1, 2, 3], 89])
    

    dic.items() 获取字典中所有键和值

    dic = {"有":[1,2,3],"李文虎":89}
    print(dic.items())
    
    
    #dict_items([('有', [1, 2, 3]), ('李文虎', 89)])
    

    解构

    a,b = 10,12
    print(a)
    print(b)   #相当于一个元组  
    #
    10
    12
    
    a = 10
    b = 20
    a,b = b,a
    print(a)
    print(b)
    #
    20
    10
    
    列表
    a, b = [1,2]
    print(a)
    print(b)
    
    #
    1
    2
    
    元组
    a, b = (1,2)
    print(a)
    print(b)          #等号前面的值要和等号后面的变量名要一一对应,不能多也不能少
    
    #
    1
    2
    
    字典
    a,b = {"1":"a","2":"b"}
    print(a)
    print(b)
    #
    1
    2
    
    dic = {"1":"a","2":"b"}
    for k,v in dic.items():
        print(k,v)
    
    #1 a
    2 b       循环获取字典中的每一个键和值
    
    

    字典的嵌套

    通过键一步一步查询

    dic = {1001:["周杰伦","林俊杰"],
           1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
           1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
           1004:{"韦小宝":[{"教主夫人":["教主"]},
                        {"阿珂":"刺客"},
                        {"双儿":"天地会"},
                        {"爱心觉罗建宁":"公主"},
                        {"独臂神尼":{"韦小宝师父":{"兰陵王":"隐身"},"花木兰":[
                               "唧唧复唧唧","木兰是战士",{"爸爸":["花和尚"]}]
                                 }},
                        {"陈圆圆":"丈母娘"},{"穆建平":"小郡主"}]},
           1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]}
           }
    
    print(dic[1005]["常鑫"][-1])
    print(dic[1002]["汪峰"]["前妻2"][-1])
    print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])
    print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])
    
    
    #
    井盖
    熊二
    隐身
    花和尚
    
  • 相关阅读:
    英文句子相似性判断
    机器学习(一)特征工程基本流程
    经典卷积神经网络(LeNet、AlexNet、VGG、GoogleNet、ResNet)的实现(MXNet版本)
    Google免费GPU使用教程(亲测可用)
    XGBoost、LightGBM的详细对比介绍
    终身机器学习:一种可持续学习的范式
    机器学习中安全与隐私问题(对抗性攻击)
    频繁模式挖掘中Apriori、FP-Growth和Eclat算法的实现和对比(Python实现)
    Webpack教程,更新中
    @babel/plugin-transform-runtime
  • 原文地址:https://www.cnblogs.com/hualibokeyuan/p/11164537.html
Copyright © 2011-2022 走看看