• 【Python21天学习挑战赛】字典 && 小数据池



    活动地址:CSDN21天学习挑战赛

    开头一叙:
    无论是以后学习需要或者是三年后的工作需要,都需要用到python的工具,也接着这次活动的机会,把python系统的学一遍。跟着大佬,让python知识从入门到精通。



    字典—dict

    作用:存储数据的,存储大量数据,可变的数据类型,无序的;比列表快。将数据和数据之间进行关联。

    字典定义

     dic={"孙悟空":80,"唐僧":100,"猪八戒":89,True:123,(12,2,3):["dada","憨憨"]} #字典中逗号分割是一个元素
     # "孙悟空"(键):80(值)       --键值对
     print(dic)
    
    • 1
    • 2
    • 3
    {'孙悟空': 80, '唐僧': 100, '猪八戒': 89, True: 123, (12, 2, 3): ['dada', '憨憨']}
    
    • 1
    • 字典的键:必须是可哈希的,也就是不可变的数据类型(字符串就是不可变的数据类型)–避免哈希冲突使用开放寻址法。 字典的键要求唯一,若是有重复的后边的值将前面的值覆盖
    • 字典的值:可以任意
    • 和列表的区别:
      • 列表是有序的对象集合
      • 字典是无序的对象集合

    字典的操作:增、删、改、查

    1、增:
    (1)暴力添加

    dic={"孙悟空":80,"唐僧":100,"猪八戒":89}
    dic["白骨精"]=78   #暴力添加
    print(dic)
    
    • 1
    • 2
    • 3
    {'孙悟空': 80, '唐僧': 100, '猪八戒': 89, '白骨精': 78}
    
    • 1

    (2)dic.setdefault():若白骨精这个键去字典查询,如果不存在执行添加,存在就不添加了

    dic.setdefault("孙悟空",78)
    print(dic)
    #   输出:(1){'孙悟空': 80, '唐僧': 100, '猪八戒': 89}
    dic.setdefault("白骨精",78)
    print(dic)
    #   输出: (2){'孙悟空': 80, '唐僧': 100, '猪八戒': 89, '白骨精': 78}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2、删
    (1)方式1、通过键值对的键去删除键

    dic={"孙悟空":80,"唐僧":100,"猪八戒":89}
    del dic["孙悟空"]
    print(dic)
    
    • 1
    • 2
    • 3
    {'唐僧': 100, '猪八戒': 89}
    
    • 1

    (2)通过键值对的键去删除键,有返回值,返回的是被删除的值

    print(dic.pop("孙悟空") )
    #   输出:80
    print(dic)
    # # 输出:{'唐僧': 100, '猪八戒': 89}
    
    • 1
    • 2
    • 3
    • 4

    (3)dic.clear()

    dic.clear()
    print(dic)
    # 输出:{}
    
    • 1
    • 2
    • 3

    3、改

    (1)当字典中没有某个键值对的时候就是添加,存在的话就是修改

    dic={"孙悟空":80,"唐僧":100,"猪八戒":89}
    dic["孙悟空"]="孙猴子" #当字典中没有某个键值对的时候就是添加,存在的话就是修改
    print(dic)
    # 输出:{'孙悟空': '孙猴子', '唐僧': 100, '猪八戒': 89}
    
    • 1
    • 2
    • 3
    • 4

    (2)dic.update()

    dic.update({"黄梅眉大王":89,"观音":56,"孙悟空":100})
    print(dic)
    # 输出:{'孙悟空': 100, '唐僧': 100, '猪八戒': 89, '黄梅眉大王': 89, '观音': 56}
    dic1={"黄梅眉大王":89,"观音":56,"孙悟空":100}
    dic1.update(dic)
    print(dic1)
    # 输出:{'黄梅眉大王': 89, '观音': 56, '孙悟空': 80, '唐僧': 100, '猪八戒': 89}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4、查

    dic={"孙悟空":80,"唐僧":100,"猪八戒":89}
    # for i in dic:       #循环获取的是字典中每个键值对的键
    #     print(i)
    
    • 1
    • 2
    • 3
    print(dic.get("孙悟空"))  #通过键值对中的键获取键值对的值
    print(dic.get("沙僧"))    #若字典没有对应的键,返回None
    #   输出:80
    #        None
    
    • 1
    • 2
    • 3
    • 4

    字典的其他操作

    dic={"孙悟空":80,"唐僧":100,"猪八戒":89}
    # for i in dic:
    #     print(i,dic.get(i)) #获取所有键值对
    print(dic.keys()) #高仿列表,获取所有的键,支持for循环遍历,不支持索引
    # 输出:dict_keys(['孙悟空', '唐僧', '猪八戒'])
    print(dic.values()) #高仿列表,获取所有的值
    # 输出:dict_values([80, 100, 89])
    print(list(dic.values()))#  转换成列表
    #   输出:[80, 100, 89]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    print(dic.items())
    for i in dic.items():
        print(i)
    
    • 1
    • 2
    • 3
    dict_items([('孙悟空', 80), ('唐僧', 100), ('猪八戒', 89)])
    ('孙悟空', 80)
    ('唐僧', 100)
    ('猪八戒', 89)
    
    • 1
    • 2
    • 3
    • 4

    字典的嵌套:

    dic={1001:["刘备","关羽","张飞"],
         1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
         1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
         1004:{"韦小宝":[{"教主夫人":["教主"]},{"阿柯":"刺客"},{"双儿","天地会"},{"爱新觉罗建宁":"公主"}]}
         }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    # 找出教主
    print(dic[1004]["韦小宝"][0]['教主夫人'][0])
    # 找出熊二
    print(dic[1002]["汪峰"]["前妻2"][1])
    
    • 1
    • 2
    • 3
    • 4

    小数据池

    代码块

    1、定义:一个模块,一个函数,一个类,一个文件等都是一个代码块。

    在python解释器中,每一行代码就是一个代码块

    is 与 == 区别

    1、== 是判断两边的值是否相等

    a=10
    b=10
    print(a==b)
    #	输出:True
    
    • 1
    • 2
    • 3
    • 4

    2、is是比较两边的地址内存是否相等

    a=10
    b=10
    print(a is b)   #is基于内存地址进行判断
    #	输出:True
    
    • 1
    • 2
    • 3
    • 4

    小数据池

    1、什么是小数据池
    答:小数据池,也称为小整数缓存机制,或者称为驻留机制等等

    针对整数:
    答:Python自动将-5~256的整数进行了缓存,当你将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。
    针对字符串:
    答:在同一代码块下,只有内容相同就采用相同的内存地址,乘法的时候总长度不能超过20,乘法的时候中文,特殊符合乘以0或者1
    针对布尔值:
    在同一代码块下,只有内容相同就采用相同的内存地址

  • 相关阅读:
    【mindspore】【模式】PYNATIVE_MODE模式和GRAPH模式的区别
    记录--Event Loop事件循环、微任务、宏任务
    还在为XShell破解烦恼,试试tabby
    洛谷_P8872
    Linux 驱动程序之字符驱动
    基于51单片机直流电机PWM控制器设计
    大型集团企业数据集成研究
    【Java Web】Kafka,构建TB级异步消息系统
    正火热的人机协作,优势揭晓!
    APIJSON自动化ORM库,后端接口和文档自动化实践整理 (一)
  • 原文地址:https://blog.csdn.net/qq_44859533/article/details/126177576