四时宝库

程序员的知识宝库

5.9_Python_字典的创建与删除(python字典的删除方法)

字典类型。

现在去看一下字典类型,与列表和元组类型不一样。字典类型是根据一个信息去查找另外的一个信息的方式,它构成了键-值对儿,它表示索引用的键和对应的值构成的一个键-值对儿,这样的一个对应的关系。

去看一下下面这个图,上面是什么?上面这个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及之前的版本,这个时候就会看到键是无序的,

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接