第五节

一、字典

  • python的数据结构之一

  • 字典 —— dict

  • 定义:dic = {"key":"dajjlad"}

  • 作用:存储数据,大量,将数据和数据起到关联作用

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

  • 所有的操作都通过键

    # 键:必须是不可变的数据类型(可哈希),且唯一   不可哈希就是可变数据类型# 值:任意dic = {"10":"苹果手机", #   键  值  对       "11":"苹果手机",       "15”:"小米手机",       "15":"华为手机",       (1,):"oppo手机",       }

1.1字典的增:

  1. 暴力添加

    dic = {'a': '上天', 'b': ['入地', '通幽'], 'c': '吃饭', 'd': '救苦救难'}dic["二狗"] = "我的太阳" # 添加的是一个键值对dic["腾格尔"] = ["来自草原的沙尘暴","音乐界的泥石流"]# 新的键如果在字典中没有,那会添加到最后字典的后面;# 如果有,那将新值替换旧值
  2. 有则不添加,无则添加

    dict.setdefaullt(键,值)

    dic = {'a': '上天', 'b': ['入地', '通幽'], 'c': '吃饭', 'd': '救苦救难'}dic.setdefault("b",["沿着","江山","起起","伏"]) # 键存在,所以不添加dic.setdefault("武器",["刀","枪","棍","棒","斧"])# 键为新,在最后一个键值对后面添加# setdefault 添加分为2步:# 1,先查看键是否在字典# 2,不存在的时候进行添加

1.2字典的删除:

  1. pop(键) —— 通过键删除,具有返 回值

    dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}dic.pop("1") # 删除了  "1":"上树"  这个键值对
  2. clear() —— 清空

    dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}dic.clear() # 清空该字典,保留空字典
  3. del —— 删除

    del dict —— 删除的是容器

    del dict["键"] —— 通过键删除

    dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}del dic # 删除的是整个字典del dic["3"] # 只删除 "3":"开黑"  这个键值对

1.3字典的改

  1. 字典名[键] = 值

    # 和字典的暴力添加一样dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}dic["2"] = "星宿老仙,法力无边" # 直接定位键,修改值
  2. 字典名.update(新字典)——在最后一个键值对后面,迭代添加

    dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}dic1 = {"天山派":"星宿老仙,法力无边","少林":"龙抓手"}dic.update(dic1)print(dic) #{'1': '上树', '2': '遛狗', '3': '开黑', '4': '打团', '天山派': '星宿老仙,法力无边', '少林': '龙抓手'}dic1.update(dic)print(dic1)#{'天山派': '星宿老仙,法力无边', '少林': '龙抓手', '1': '上树', '2': '遛狗', '3': '开黑', '4': '打团'}

1.4字典的查

  1. 字典名.get(键,找不到的换回None)

    dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}
    print(dic.get("5")) # 返回 None
    print(dic.get("5","找不到啊")) # 返回 找不到啊
    print(dic.get("2")) # 返回 遛狗
    
  2. 字典名.setdefault(键)

    dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}
    print(dic.setdefault("3")) # 返回开黑
    print(dic.setdefault("77")) # 返回 None
    print(dic["4"]) # 也可直接查找,没有就是报错
    
    • 字典名.keys() ——所有的键,获取到的是一个高仿列表

    • 字典名.values() —— 所有的值,获取到的是一个高仿列表

    • intems() —— 键值

      • 注意:高仿列表支持迭代,不支持索引

      dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}
      print(dic.keys()) # 所有的键,获取到的是一个高仿列表
      print(dic.valuse()) # 所有的值,获取到的是一个高仿列表
      
  3. for循环,返回的是字典的键

    dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}
    for i in dic:
        print(i) # 循环出的是字典的键
    

1.5解构

  • 在字典中返回的是键

a,b = 1,2
print(a,b)
# 结果:
# 1 2

a,b = ('你好','世界')
print(a,b)
# 结果:
# 你好 世界

a,b = ['你好','大飞哥']
print(a,b)
# 结果:
# 你好 大飞哥

a,b = {'汪峰':'北京北京','王菲':'天后'}
print(a,b)
# 结果:
# 汪峰 王菲
  • 解构在字典中的作用:

    dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}
    for k,v in dic.items():
        print('这是键',k)
        print('这是值',v)
    """
    结果:
    这是键 1
    这是值 上树
    这是键 2
    这是值 遛狗
    这是键 3
    这是值 开黑
    这是键 4
    这是值 打团
    """
    
    • *__是一个万能值,万能接受

      lis = [1,2,3,4,5,6,7,8]# 取出来1,2,5
      a,b,c,d,e,*__ = lis
      print(a,b,e)
      # 结果 1 2 5
      

1.6字典的嵌套

dic = {11:{1:{"秦":"嬴政","秦二世","李斯","商鞅","章邯","蒙恬"},         
                2:{"汉":"刘邦","韩信","卫青","霍去病"}
                3:{"三国":"魏","蜀","吴"}},    
       22:{1:{"歌唱家":{"刘欢":["我和你","弯弯的月亮"]}},         
            2:{"邓紫棋":["泡沫","喜欢你","天堂","光年之外"]},
            3:{"腾格尔":["隐形的翅膀","卡路里","日不落"]}},    
       33:{1:{"蔡徐坤":{"唱":["鸡你太美"],"跳":["钢管舞"],"rap":["大碗面"],"篮球":("NBA形象大使")}},  
            2:{"JJ":{"行走的CD":["江南","曹操","背对背拥抱","小酒窝","不潮不花钱"]}},         
            3:{"Jay":{"周董":["菊花台","双节棍","霍元甲"]}}},    
       44:{1:{"韦小宝":{"双儿":"刺客","建宁":{"公主":{"吴三桂":"熊"}},"龙儿":{"教主老婆":"教主"}}}}
      }
print(dic[201][1]["韦小宝"]["建宁"]["公主"]["吴三桂"])# 熊
print(dic[103][1]["蔡徐坤"]["跳"][0])# 钢管舞
print(dic[102][2]["邓紫棋"][1]) # 黑风雷

后续还会持续更新,从入门到放弃  ^.^。

python_0基础开始_day05的更多相关文章

  1. python_0基础学习_day02

    第二节 一,while while也称为无限循环.死循环 while 条件: 缩进 循环体 应用领域:音乐播放:单曲循环,列表循环,随机播放(也是有规律的) 登陆界面:…… 数学计算:1~100的和, ...

  2. python_0基础学习_day01

    Python是一门动态解释型的强类型定义语言 一.变量 变量命名规则 由数字.字母.下划线组成 不能以数字开头 要具有描述性 要区分大小写 禁止使用python的关键字(在pycharm中关键字明明变 ...

  3. python_0基础开始_day07

    第七节 1,基础数据类型补充 str: print(str.capitalize()) —— 首字母大写 print(str.title()) —— 每个单词的首字母大写 print(str.swap ...

  4. python_0基础开始_day06

    第六节 1.小数据池 ==,is,id ==:查看等号两边的值是否一样 a = 9b = 9print(a == b) # 返回Truec = "dog"d = "dog ...

  5. python_0基础开始_day03

    第三节 一.整形和布尔值的转换 int整型 python3: 全部都是整型 python2: 整型,长整型long 十进制转换二进制 # 将十进制的168转换为二进制 ​#得出结果 将十进制的168转 ...

  6. python_0基础开始_day04

    第四节 一.列表 list 数据类型之一,存储大量的,不同类型的数据 列表中只要用逗号隔开的就是一个元素 有序可变的. 1.1列表的索引 列表和字符串一样也拥有索引,但是列表可以修改: lst = [ ...

  7. python_0基础开始_day13

    第十三节 一,匿名函数 匿名函数 == 一行函数 lambda == def == 关键字 函数体中存放的是代码 生成器体中存放的也是代码 就是yield导致函数和生成器的结果不统一 lambda x ...

  8. python_0基础开始_day12

    第十二节 一,生成器 生成器的核心:生成器的本质就是迭代器 迭代器是python自带的 生成器是程序员自己写的一种迭代器 在python中有三种方式来创建生成器: 基于函数编写 推导式方式编写 pyt ...

  9. python_0基础开始_day11

    第十一节 一,函数名的第一类对象 函数名当作值,赋值给变量 print(函数名) 查看看书的内存地址 函数名可以当作容器中的元素 lis = []dic = {}def func():    prin ...

随机推荐

  1. c++ 队列的基本应用

    c++ 队列的基本应用 题目描述 现在去营业厅办理业务,都要先取号,再等待叫号.叫号系统有两种模式: 1.取号,取号时要输入自己的11位电话号码,号码按取号的顺序存在系统中: 2.叫号,叫号时会显示当 ...

  2. JVM中有哪些内存区域,分别是用来干什么的

    前言 之前我们探讨过一个.class文件是如何被加载到jvm中的.但是jvm内又是如何划分内存的呢?这个内被加载到了那一块内存中?jvm内存划分也是面试当中必被问到的一个面试题. 什么是jvm内存区域 ...

  3. HBase学习笔记一

    HBase简介 HBase概念 HBase的原型是谷歌的Bigtable论文 HBase是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC上搭建起大规模结构化存储集 ...

  4. 多线程总结-同步之synchronized关键字

    目录 1.为什么要使用synchronized? 2.synchronized锁什么,加锁的目的是什么? 3.代码示例 3.1锁this和临界资源对象 3.2锁class类对象 3.3 什么时候锁临界 ...

  5. EnjoyingSoft之Mule ESB开发教程系列第五篇:控制消息的流向-数据路由

    目录 1. 使用场景 2. 基于消息头的路由 2.1 使用JSON提交订单的消息 2.2 使用XML提交订单的消息 2.3 使用Choice组件判断订单格式 3. 基于消息内容的路由 4. 其他控制流 ...

  6. GeoPackage - 一个简便轻量的本地地理数据库

    GeoPackage(以下简称gpkg),内部使用SQLite实现的一种单文件.与操作系统无关的地理数据库. 当前标准是1.2.1,该版本的html版说明书:https://www.geopackag ...

  7. Elasticsearch 技术分析(九):Elasticsearch的使用和原理总结

    前言 之前已经分享过Elasticsearch的使用和原理的知识,由于近期在公司内部做了一次内部分享,所以本篇主要是基于之前的博文的一个总结,希望通过这篇文章能让读者大致了解Elasticsearch ...

  8. 跟着大彬读源码 - Redis 5 - 对象和数据类型(上)

    相信很多人应该都知道 Redis 有五种数据类型:字符串.列表.哈希.集合和有序集合.但这五种数据类型是什么含义?Redis 的数据又是怎样存储的?今天我们一起来认识下 Redis 这五种数据结构的含 ...

  9. 【区分】Typescript 中 interface 和 type

    在接触 ts 相关代码的过程中,总能看到 interface 和 type 的身影.只记得,曾经遇到 type 时不懂查阅过,记得他们很像,相同的功能用哪一个都可以实现.但最近总看到他们,就想深入的了 ...

  10. 多个module实体类集合打一个jar包并上传至远程库

    本章内容主要分享多个module中的实体类集合生成到一个jar包中,并且发布到远程库:这里采用maven-assembly-plugin插件的功能来操作打包,内容不长却贴近实战切值得拥有,主要节点内容 ...