Python系列-字典

 🌈个人主页: 会编程的果子君
💫个人格言:“成为自己未来的主人~” 

目录

字典是什么

创建字典

查找key

新增/修改元素

删除元素

遍历字典元素

取出所有的key和value

合成的key类型

​编辑

小结


字典是什么

字典是一种存储键值对的结构

啥是键值对?这是计算机/生活中一个非常广泛使用的概念

把键(key)和值(value)进行一个一对一的映射,然后就可以根据键,快速找到值

创建字典

  • 创建一个空的字典,使用{}表示字典
    a={}
    b=dict()
    print(type(a))
    print(type(b))
    

  • 也可以在创建的同时指定初始值
  • 键值对之间使用,分割,键和值之间使用:分割,(置号后面推荐加一个空格)
  • 使用print来打印字典内容 
student={'id':1,'name':'zhangsan'}
print(student)
  • 为了代码更规范美观,在创建字典的时候往往会把多个键值对,分成多行来书写 
    student={'id':1,'name':'zhangsan'
    }
    

  • 最后一个键值对,可以写,,也可以不写 
student={'id':1,'name':'zhangsan',
}

查找key

  • 使用 in 可以判定 key 是否在字典中存在,返回布尔值

 

student={'id':1,'name':'zhangsan',
}
print('id'in student)
print('score' in student)

 

  • 使用 [ ] 通过类似于取下标的方式,获取到元素的值,只不过此处的“下标”是key(可能是整数,也可能是字符串等其他类型)
    student={'id':1,'name':'zhangsan',
    }
    # print('id'in student)
    # print('score' in student)
    print(student['id'])
    print(student['name'])

  • 如果key在字典中不存在,则会抛出异常

    student={'id':1,'name':'zhangsan',
    }
    print(student['score'])
    

新增/修改元素

使用 [ ] 可以根据 key 来新增/修改value

  • 如果 key 不存在,对取下标操作赋值,即为新增键值对
    student={'id':1,'name':'zhangsan',}
    student['score']=90
    print(student)
    

  • 如果key已经存在,对取下标操作赋值,即为修改键值对的值

    student={'id':1,'mame':'zhangsan','score':80,
    }
    student['score']=90
    print(student)
    

删除元素

  • 使用pop方法根据key删除对应的键值对
    student={'id':1,'name':'zhangsan','score':80,
    }
    student.pop('score')
    print(student)
    

遍历字典元素

  • 直接使用 for 循环能够获取到字典中的所有key,进一步就可以取出每一个值了
    student={'id':1,'name':'zhangsan','score':80
    }for key in student:print(key,student[key])

    取出所有的key和value

  • 使用 keys 方法可以获取到字典中的所有的key
    student={'id':1,'name':'zhangsan','score':80
    }print(student.keys())

此处的dict_keys是一个特殊的类型,专门用来表示字典的所有key,大部分元组支持的操作对于dict_keys同样适用

  • 使用values方法可以获取到字典中的所有value
    
    student={'id':1,'name':'zhangsan','score':80
    }print(student.values())

此处的dict_values也是一个特殊的类型,和dict_keys类似

  • 使用items方法可以获取到字典中所有的键值对
    student={'id':1,'name':'zhangsan','score':80
    }print(student.items())

合成的key类型

不是所有的类型都可以作为字典的key

字典本质上是一个哈希表,哈希表的key要求是“可哈希的”,也就是可以计算出一个哈希值

  • 可以使用hash函数计算某个对象的哈希值
  • 但凡能够计算出哈希值的类型,都可以作为字典的key
    print(hash(1))
    print(hash('hello'))
    print(hash(True))
    print(hash(()))

  • 列表无法计算哈希值

    print(hash([1,2,3]))
    

  • 字典也无法计算哈希值

    print(hash({'id':1}))

小结

字典也是一个常用的结构,字典的所有操作都是围绕 key 来展开的,需要表示“键值对映射”这种场景时就可以考虑使用字典

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开箱即用的Linux系统

经常会遇到这样的场景,临时需要演示一下linux环境,安装虚拟机耗时耗资源,如果有一个开箱即用的linux,而且还能包括主流的linux环境就好了。instantbox 是一个这样的项目,几秒内启动一个主流的 Linux 系统,支…

船员投保的数学模型(MATLAB求解)

1.问题描述 劳动工伤事故,即我们平时所说的“工伤事故”,也称职业伤害,是指劳动者在生产岗位上,从事与生产劳动有关的工作中发生的人身伤害事故、急性中毒事故或职业病。船员劳动工伤事故是指船员在船舶生产岗位上,从…

第七讲_JavaScript的Iterator和Generator

JavaScript的Iterator和Generator 1. Iterator1.2 for-of语法糖 2. Generator2.1 定义一个生成器函数2.2 常用的方法2.3 基本用法2.4 传参的用法2.5 异步的用法 1. Iterator ES6 中,默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性。一个数据结构只要拥…

字节跳动新一代云原生消息队列实践

作者:火山引擎云原生计算研发工程师|雷丽媛 上文我们了解了在字节跳动内部业务快速增长的推动下,经典消息队列 Kafka 的劣势开始逐渐暴露,在弹性、规模、成本及运维方面都无法满足业务需求。因此字节消息队列团队研发了计算存储分…

RISC-V指令集之RV32I

RISC-V指令集之RV32I 1 RV32I的寄存器2 RV32I的指令2.1 算术运算指令2.2 逻辑运算指令2.3 移位运算指令2.4 内存读写指令2.5 分支与跳转指令 本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 RV32I的寄存器 如下图,列出了RV32I 寄存器…

力扣hot100 数据流的中位数 大小根堆

Problem: 295. 数据流的中位数 文章目录 思路复杂度💖 Code 思路 👨‍🏫 参考 大根堆维护较小值(堆顶即中位数),小根堆维护较大值(堆顶可能是中位数之一)维护小堆长度较长&#x…

idea搭建spring5.3.x源码环境

1.写在前面的话 碰到了不少想阅读或者学习spring源码的同学,但是第一步搭建这个源码阅读环境就能难倒了一大批人。下面我就以spring5.3.x这个源码分支,来具体演示一下搭建过程。 2. 下载源码 下载源码这一步,说实话,由于某些原…

grafana安装DevOpsProdigy KubeGraf 1.5.2

安装DevOpsProdigy KubeGraf需要安装kube-state-metrics 官方地址:https://github.com/kubernetes/kube-state-metrics/tree/release-2.10/examples/standard 查看k8s版本和kube-state-metrics对应版本: [rootmaster1 kube-state-metrics]# ll 总用量 …

并查集(高阶数据结构)

目录 一、并查集的原理 二、并查集的实现 2.1 并查集的初始化 2.2 查找元素所在的集合 2.3 判断两个元素是否在同一个集合 2.4 合并两个元素所在的集合 2.5 获取并查集中集合的个数 2.6 并查集的路径压缩 2.7 元素的编号问题 三、并查集题目 3.1 省份的数量 3.2 等…

R-kknn包-类别插值可视化绘制

前面的推文我们介绍了使用scikit-learn结合分类散点数据,构建机器学习分类模型并将模型结果可视化展示,具体链接如下: 机器学习和可视化还能一起这样用?Python教你全搞定。今天这篇推文,我们就使用R语言的kknn包进行类…

【2023地理设计组一等奖】基于机器学习的地下水仿真与时空分析

作品介绍 1 设计思想 1.1 作品背景 华北平原是我国最重要的粮棉产地之一,然而近年来农业的低效用水以及过度压采正逐步加剧其地下水资源的紧张性,为经济可持续发展带来重大风险。而地下水动态变化与人为干预、全球气候波动呈现出高度相关性,因此,地下水的仿真模拟对保障粮…

JMeter 下载、安装、启动

JMeter安装部署依赖Java环境,所以首先得安装JDK。 JDK下载JDK环境变量配置 ① 新建系统环境变量JAVA_HOME ② 编辑系统变量Path ③ 新建系统变量CLASSPATH变量 JMeter下载安装 Apache JMeter - Apache JMeter™ JMeter安装部署依赖Java环境,所以首…

sql注入之GETSHELL

2024.2.1 GETSHELL 利用SQL注入获取MYSQL数据库权限的要求: 文件读写基本要求: 是root用户最高权限 知道网站的绝对路径 文件读写注入的原理: 利用文件的读写权限进行注入,它可以写入一句话木马,也可以读取系统文件的敏感信息 文件读写…

Qt设计师中(没有现成的控件):如何添加QToolBar工具栏

1、在QtCreator设计师界面中,在MainWindow上右键,有“添加工具栏”菜单项 2、但只有在MainWindow上右键才有,在其它控件上方点击则没有,那么怎么在对话框上添加呢? 可以添加一个QWidget,然后手动在ui文件里把class改为QToolBar就…

canvas设置全局透明度globalAlpha(图文示例)

查看专栏目录 canvas实例应用100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

睿尔曼超轻量仿人机械臂—外置按钮盒使用说明

睿尔曼RM系列机械臂的控制方式有很多种,包括:示教器、JSON、API等。在此为大家介绍外置按钮盒的使用方法。 按钮盒接线安装 按钮盒外观如下图所示,有:急停、暂停、开始、继续。四个功能按钮。用户可通过这四个按钮来实现对机械臂运…

环状热力图R语言画法

环状热力图(Circular Heatmap)是一种以环状布局展示数据的可视化方法。它结合了热力图和极坐标系统,能够有效地显示数据的关系、模式和趋势。 环状热力图通常用于可视化二维数据矩阵,其中行和列代表不同的类别或变量,…

K8S-NFS-StorageClass

工作流程 K8s中部署NFS-StorageClass K8s的StorageClass提供了为集群动态创建PV的能力。 1.部署NFS服务 2.选择NFS的Provinisoner驱动 K8S中没有内置的NFS的制备器,而定义StorageClass的时候需要指定制备器(Pervisioner),所以需要&#xf…

OpenHarmony—开发及引用静态共享包(API 9)

HAR(Harmony Archive)是静态共享包,可以包含代码、C库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。 接下来&a…

springboot146基于Spring Boot的可盈保险合同管理系统的设计与实现

可盈保险合同管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本可盈保险合同管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时…