5.9_Python_字典的创建与删除 python字典怎么创建
bigegpt 2024-10-08 00:50 43 浏览
字典类型。
现在去看一下字典类型,与列表和元组类型不一样。字典类型是根据一个信息去查找另外的一个信息的方式,它构成了键-值对儿,它表示索引用的键和对应的值构成的一个键-值对儿,这样的一个对应的关系。
去看一下下面这个图,上面是什么?上面这个key叫做键,是一个人的身份证号,而下面它所对应的值叫value,这个value是对应的一个具体的一个对象。由于在字典当中,它没有整数索引的概念,所以要想检索字典当中的元素,可以通过这个键去检索元素。
与列表一样,字典也是Python当中的可变数据类型,也就说学两个可变数据类型了,一个是列表一个是字典,所以它是可变数据类型,它具有增、删、改等一系列的操作。
与列表不同的是,字典当中的元素是无序的,因为它的底层使用了一个叫做hash的东西,第一个添加到字典当中的元素,在内存当中它并不一定是在第一位的,这就是什么无序的一个特点。而且字典当中键要求必须唯一,只能有一个,不能有重复,但是值可以出现重复。
还有最重要的一点就是,字典当中的键要求是不可变序列,所以谁可以去作为字典当中的键?字符串可以、整数可以、浮点可以、元组也可以,因为元组是学的一个不可变的数据类型,它可以但是列表是不允许作为字典当中的键的。
去看一下字典的创建方式有这样的两种。
·第一种是使用花括号直接创建字典,就这种方式,使用{去创建字典的时候,是一对key1:value1逗号这是一对,key2:value2这是又的另外的一对。
·第二种方式,它使用内置函数dict()去创建字典。
使用dict()去创建字典还有两种方式。
·第一种就是通过映射函数创建字典,它有个映射函数叫做zip,zip小括号,小括号里面它写lst1,lst2。当然也可以是元组,它怎么去操作?这是lst1,这是lst2,它会把两个列表当中对应索引位置上的元素括在一起,括在一起前面的是键,后面的是一个值,也就说10和cat括在一起,10将作为键,cat去作为值。
·还有一种就是直接使用dict 0的去创建,这是一个key1,这是一个什么?把它叫做赋值运算符,字典也是序列当中的一种,所以序列的相关操作对于字典依然可以使用。字典的删除与列表和元组的删除完全相同,都可以使用del语句句去删除。
现在去看一下字典的创建与删除,新建一个Python文件,示例5-15,字典的创建与删除。
·首先采用的第一种方式去创建字典,花括号里面写个10冒号,cat这是第一组,20冒号dog这是第二组,第三组,30冒号pet,第四组,第四组的键依然是20,它的值是一个zoo。
这个时候发现在字典当中有两个键是相同的,都是20,它的值会怎么办?程序会报错吗?当右键运行的时候发现程序没有报错,而是第二个20的值去将第一个20的值进行了覆盖。所以这种情况说明什么?当键相同时,它的value进行了覆盖,这是第一种创建字典的方式。
·再看一下第二种创建字典的方式,使用zip函数映射。首先有一个lst1里面有这样10、20、30、40这样的4个元素,list2,cat、dog,pet,zoo,car,有这样的5个元素,一个是4个元素一个是5个元素。
在使用zip函数去进行映射的时候情况会怎么样?去输出一下zipobj,当单击右键运行的时候发现它是一个zip对象,也就是说映射的结果是一个zip对象,根本没有看到里面的内容。如果想看到里面的内容,第一种方式可以使用list去进行转换。list内置函数就是将映射对象转成列表类型。将映射对象转成列表类型之后发现列表当中的元素是元组类型,第一个列表当中的元素做第一个元素,对应所有位置上元素是元组的第二个元素。
这个时候看到了转成列表之后里面的结果是什么?如何去把它转成字典?要把第10行注释掉,使用内置函数dict,然后把zipobj对象放进来,就是映射对象放进来,输出d,单击右键运行的时候发现这个时候输出的d才是真正的字典类型。
为什么要将第10行注释?因为如果不注释掉,zipobj就是映射对象里面内容已经转成列表类型了,所以不能再去转成字典了,因为它已经没有元素了,要把第10行注释掉之后再使用dict再去转。
·再去看一下还有一种创建字典的方式,使用参数创建字典,d=dict()里面就是赋值的这种形式,cat=10,dog=20赋了两个值,先在单击先把它输出,再单击右键运行,发现这个时候谁是键?cat是键就左边的是键,右侧的是值value了。
现在去创建一个元组,在这写个10,20、30元组当中的元素是10、20和30,现在去看一下可不可以使用元组去作为键?t冒号10,这是谁?t是键,就元组是键,10是value可不可以?单击右键运行一下,发现元组是可以作为字典当中键的,列表可不可以?列表lst=[10,20,30]。
列表和元组区别:元组使用小括号,列表使用方括号,这个时候去看一下lst去做键10去做值,当单击右键运行的时候发现程序报错了,告诉你lst是一个没有hash的,也就说什么列表是不可以去作为字典当中的键的。因为列表是可变数据类型,所以可以总结出来可变数据类型是不能作为字典当中的键的。
字典属于谁?字典属于序列,它是属于序列的,所以序列当中的方法可以使用,比如求最大值、最小值、长度,让它求max,运行一下,发现它告诉你最大值是谁,告诉你最大值是一个dog,最小值。再求一下长度,长度计算的是字典当中元素的个数,最大只是dog,最小只是cat,它的长度是2,说明里面有两个元素。
再去看一下字典的删除,del d,d是字典的名称,删除之后再输出一下,当删除之后再输出的时候发现它告诉你怎么样?没有定义了,也就说删除之后就不能在这里使用了。
在这有一个注意事项,注意事项是什么?字典当中键应该是无序的,但是在这里头写的时候发现第一个添加的是10,重新运行一下,第一个是20、20、30、40,发现它是有序的,可能会对你造成误解。
需要跟你说一件事情,就是字典当中键无序的这件事情永远是正确的,但是为什么现在看到的好像与添加顺序是一致?是因为在Python 3.6版本之后解释器进行了处理,所以看到的输出的顺序和添加顺序是一致的,是因为解释器做处理了。
当然如果愿意可以再去安装一个3.5的版本,3.5及之前的版本,这个时候就会看到键是无序的,
相关推荐
- pyproject.toml到底是什么东西?(py trim)
-
最近,在Twitter上有一个Python项目的维护者,他的项目因为构建失败而出现了一些bug(这个特别的项目不提供wheel,只提供sdist)。最终,发现这个bug是由于这个项目使用了一个pypr...
- BDP服务平台SDK for Python3发布(bdp数据平台)
-
下载地址https://github.com/imysm/opends-sdk-python3.git说明最近在开发和bdp平台有关的项目,用到了bdp的python的sdk,但是官方是基于p...
- Python-for-Android (p4a):(python-for-android p4a windows)
-
一、Python-for-Android(p4a)简介Python-for-Android(p4a),一个强大的开发工具,能够将你的Python应用程序打包成可在Android设备上运行...
- Qt for Python—Qt Designer 概览
-
前言本系列第三篇文章(QtforPython学习笔记—应用程序初探)、第四篇文章(QtforPython学习笔记—应用程序再探)中均是使用纯代码方式来开发PySide6GUI应用程序...
- Python:判断质数(jmu-python-判断质数)
-
#Python:判断质数defisPrime(n):foriinrange(2,n):ifn%i==0:return0re...
- 为什么那么多人讨厌Python(为什么python这么难)
-
Python那么棒,为什么那么多人讨厌它呢?我整理了一下,主要有这些原因:用缩进替代大括号许多人抱怨Python完全依赖于缩进来创建代码块,代码多一点就很难看到函数在哪里结束,那么你就需要把一个函数拆...
- 一文了解 Python 中带有 else 的循环语句 for-else/while-else
-
在本文中,我们将向您介绍如何在python中使用带有else的for/while循环语句。可能许多人对循环和else一起使用感到困惑,因为在if-else选择结构中else正常...
- python的numpy向量化语句为什么会比for快?
-
我们先来看看,python之类语言的for循环,和其它语言相比,额外付出了什么。我们知道,python是解释执行的。举例来说,执行x=1234+5678,对编译型语言,是从内存读入两个shor...
- 开眼界!Python遍历文件可以这样做
-
来源:【公众号】Python技术Python对于文件夹或者文件的遍历一般有两种操作方法,一种是至二级利用其封装好的walk方法操作:import osfor root,d...
- 告别简单format()!Python Formatter类让你的代码更专业
-
Python中Formatter类是string模块中的一个重要类,它实现了Python字符串格式化的底层机制,允许开发者创建自定义的格式化行为。通过深入理解Formatter类的工作原理和使用方法,...
- python学习——038如何将for循环改写成列表推导式
-
在Python里,列表推导式是一种能够简洁生成列表的表达式,可用于替换普通的for循环。下面是列表推导式的基本语法和常见应用场景。基本语法result=[]foriteminite...
- 详谈for循环和while循环的区别(for循环语句与while循环语句有什么区别)
-
初九,潜龙勿用在刚开始使用python循环语句时,经常会遇到for循环和while循环的混用,不清楚该如何选择;今天就对这2个循环语句做深入的分析,让大家更好地了解这2个循环语句以方便后续学习的加深。...
- Python编程基础:循环结构for和while
-
Python中的循环结构包括两个,一是遍历循环(for循环),一是条件循环(while循环)。遍历循环遍历循环(for循环)会挨个访问序列或可迭代对象的元素,并执行里面的代码块。foriinra...
- 学习编程第154天 python编程 for循环输出菱形图
-
今天学习的是刘金玉老师零基础Python教程第38期,主要内容是python编程for循环输出菱形※。(一)利用for循环输出菱形形状的*号图形1.思路:将菱形分解为上下两个部分三角形图案,分别利用...
- python 10个堪称完美的for循环实践
-
在Python中,for循环的高效使用能显著提升代码性能和可读性。以下是10个堪称完美的for循环实践,涵盖数据处理、算法优化和Pythonic编程风格:1.遍历列表同时获取索引(enumerate...
- 一周热门
- 最近发表
-
- pyproject.toml到底是什么东西?(py trim)
- BDP服务平台SDK for Python3发布(bdp数据平台)
- Python-for-Android (p4a):(python-for-android p4a windows)
- Qt for Python—Qt Designer 概览
- Python:判断质数(jmu-python-判断质数)
- 为什么那么多人讨厌Python(为什么python这么难)
- 一文了解 Python 中带有 else 的循环语句 for-else/while-else
- python的numpy向量化语句为什么会比for快?
- 开眼界!Python遍历文件可以这样做
- 告别简单format()!Python Formatter类让你的代码更专业
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)