当前位置: 首页 > news >正文

7:python第三章:更多的数据类型2(字典)

目录

7.1字典的介绍与一般的特征

7.2字典的特性与一些关于字典的方法

7.2.1访问字典

7.2.2字典的特性1:键不能重复性

7.2.3字典的合成与改变

7.2.3.1字典的合成

7.2.3.2字典的改变

7.2.3.2.1字典的修改

7.2.3.2.2字典的删除

7.2.4字典的特性2:key的不可变性


7.1字典的介绍与一般的特征

字典,在python中是一种数据类型,他的存在方式与列表是不一样且看上去较为特殊。

字典使用大括号{},所以看到大括号的数据类型就是字典。字典的元素构成不在是简单的一个值,类似与列表一样[“apple”,“orange“]这样了,而是由两个部分组成。

dic={key1: value1,key2:value}

这里的一个元素由key(键)与value(值)来表示(并且key后面用冒号隔开,然后紧接着是value。)这里可以理解成有点想电话号码表,比如说,小明的电话:多少多少多少,这样子的感觉。举个例子

dic={"小李":125467854313,"小明":2938193848919}
print(dic)

这里key1是小李,那么value1是小李的电话。以此类推即可 

当然不仅仅是电话,比如说要做一张调查表,需要你的名字(name),性别(gender),职业(occupation),等等这里也是属于字典的范畴。所以可以看一下(这里是假设哈)

dic={"name":"x", "gender":"male", "occupation":"scientist" }
print(dic)

这个就是基本的字典,接着我们要了解一些字典的特性与关于字典的一些函数与方法。

7.2字典的特性与一些关于字典的方法

7.2.1访问字典

字典中使用了键:值的格式,如果我想调出这个元素的话,这个叫做访问字典,那如何访问呢,这个也是非常简单的。

dic={"name":"x", "gender":"male", "occupation":"scientist" }
print("name:", dic['name'])

在这里print中dic(字典的名字)[你需要的那个键],这样子就能调出你想要的东西。

最后打印出来就是 name:x

如果字典中没有数据的话,那么打印出来将会报错。

dic={"name":"x", "gender":"male", "occupation":"scientist" , "unversity": }
print("name:", dic['unversity'])

VScode本身也会对你这个代码进行报错,会产生红线。

7.2.2字典的特性1:键不能重复性

那么我们知道这么去访问(其实就是调出我们想要的元素),那么做一个合理的假设,字典中有两个一摸一样的键会发生什么样的神奇现象,并且我们使用访问的方法调用一下那个键,会发生什么样的状况。

dic={"name":"x", "gender":"male", "occupation":"scientist" , "favorite":"play games", "name":"Charles"}
print("name:", dic['name'])

接下来运行一下看结果是怎么样的

所以在字典中,如果你使用了两个一样的键的话,使用访问,调出那个数据的时候,总会是后面那个键。

所以并不是使用了两个同样的键就会报错,是使用了同样的键之后,调用起来并不方便,很容易混淆,因为打印出来总是后面的那个值。

所以一般我们并不在字典中使用两个一样的key。

7.2.3字典的合成与改变

7.2.3.1字典的合成

在学习了字典之后,我们知道会有“键:值”,两个部分组成,那么这两个部分能不能由两个列表进行拼凑而成。

这里的答案是肯定的,但是这里需要两个列表,原因不多说了。可以来看一下例子(内容是虚假的哈)

list1 = ['Author', 'age', 'sex']
list2 = ['Charles Wesley', 100000, 'male']
dic1 = dict(zip(list1, list2))
print(dic1)

这里使用了dict()将对应的数据类型改成字典这种数据类型,然后zip在电脑中有数据包这样的含义,在python中有两者一一对应的感觉,第一个对第一个,感觉是将两个打包了一样。所以最后打印出来就是一一对应的一个字典

7.2.3.2字典的改变
7.2.3.2.1字典的修改

字典的修改有点像,变量的二次赋值。可以通过例子来学习

list1 = ['writer', 'age', 'gender']
list2 = ['Charles', 101010101, 'male']
dic = dict(zip(list1, list2))
dic["writer"]="Wesley"
print(dic)

这个打印出来就成了

所以字典的内容就被修改了.

7.2.3.2.2字典的删除

这里介绍的是删除字典中的内容。这里使用的del这个函数

可以看一下例子(很好理解)

list1 = ['writer', 'age', 'gender']
list2 = ['Charles', 101010101, 'male']
dic = dict(zip(list1, list2))
dic["writer"]="Wesley"
del dic["writer"]
print(dic)

这个要注意,并不是只有key或者value被删除了,是这个整体都被删除了,因为这个整体是一个元素。

如果想要删除整个字典的话也非常简单

list1 = ['writer', 'age', 'gender']
list2 = ['Charles', 101010101, 'male']
dic = dict(zip(list1, list2))
dic["writer"]="Wesley"
del dic
print(dic)

这里代表字典已经全部被删掉了。

并且pop函数与popitem这两个也能进行操作

首先介绍一下pop函数

list1 = ['writer', 'age', 'gender']
list2 = ['Charles', 101010101, 'male']
dic = dict(zip(list1, list2))
dic["writer"]="Wesley"
writer=dic.pop("writer")
print(dic)

这里删除了writer这个元素。

然后使用popitem将会删除这个字典中最后的一个元素。

list2 = ['Charles', 101010101, 'male']
dic = dict(zip(list1, list2))
dic["writer"]="Wesley"
ahsnen=dic.popitem()
print(dic)

这里就是删除了整个字典中最后一个元素

7.2.4字典的特性2:key的不可变性

在字典中key的值非常重要,不能重复,不能改变(不能使用一些摸棱两可的数据类型)。可以使用数字,字母等确定的数据类型。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SAPUI5基础知识25 - 聚合绑定(Aggregation Binding)
  • CentOS7单机环境安装k8s集群
  • 基于ssm+vue+uniapp的“健康早知道”小程序
  • 【HarmonyOS】头像圆形裁剪功能之手势放大缩小,平移,双击缩放控制(三)
  • 如何在Centos7安装“influxDB“?
  • 网络压缩之网络剪枝(network pruning)
  • ABAP CURSOR游标的应用1
  • Acrobat Pro DC 2023 for Mac/Win:全能型PDF编辑器深度解析
  • c++ 创建对象 和 使用对象
  • LlamaIndex 使用 RouterOutputAgentWorkflow
  • Github 2024-09-02 开源项目周报 Top13
  • mysql的整理
  • AIGC大模型智能擦除:Sanster/IOPaint,python(1)
  • Linux下的exec函数簇
  • 【MySQL】深圳大学数据库实验二
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  •  D - 粉碎叛乱F - 其他起义
  • Java 最常见的 200+ 面试题:面试必备
  • jquery ajax学习笔记
  • JS实现简单的MVC模式开发小游戏
  • k8s如何管理Pod
  • Sequelize 中文文档 v4 - Getting started - 入门
  • spring boot下thymeleaf全局静态变量配置
  • vue-router的history模式发布配置
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 浮现式设计
  • 小程序测试方案初探
  • 06-01 点餐小程序前台界面搭建
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 第二十章:异步和文件I/O.(二十三)
  • ​2020 年大前端技术趋势解读
  • ​Redis 实现计数器和限速器的
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #laravel 通过手动安装依赖PHPExcel#
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #微信小程序:微信小程序常见的配置传值
  • #微信小程序:微信小程序常见的配置传旨
  • (2.2w字)前端单元测试之Jest详解篇
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (C)一些题4
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (九)One-Wire总线-DS18B20
  • (三分钟)速览传统边缘检测算子
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (译)2019年前端性能优化清单 — 下篇
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • .NET Core中如何集成RabbitMQ