美文网首页
Python特色数据类型--字典

Python特色数据类型--字典

作者: 夏日春风 | 来源:发表于2018-02-11 17:20 被阅读0次

    字典

    字典,如下图所示:

    可以利用关键词查找对应信息

    例如我们可以通过人的身份证号码查到一个人的信息

    为什么呢?因为每个人的身份证号是唯一的

    创建字典

    字典是一些列键(key)值(value)对组成的,形式如下:

    {键1:值1,键2,:值2},每个键值对用冒号隔开,每对之间用逗号隔开,演示一下创建字典:

    {键1:值1,键2,:值2},每个键值对用冒号隔开,每对之间用逗号隔开,演示一下创建字典

    重点:键必须是唯一的,必须是不可变的,如字符串,数字,元组

    值可以是任何数据类型

    我们按要求创建几个奇葩的字典:

    创建空字典:

    还可以用dict()来创建字典

    用法如下:

    通过放入列表套元组或者元组套列表实现

    或者列表套列表 、元组套元组

    还记得上节课在元组里讲到的列表和元组的相互转换么?

    其实还可以这样创建:

    这种情况下,键只能为字符串类型,并且创建的时候字符串不用加引号

    不信你试试加上引号变成字符串:

    结果确实报错了,用这种方法不能创建键为数值型的字典:

    访问字典中的值:

    和列表元组的索引相似,以以下形式访问键对应的值:

    字典名[键]

    注意:如果查找的键不在字典里,会报错:

    看报错信息,是KeyKerror

    如果不确定,可以先做个检查,查查字典里是否有某个键:

    使用方法:

    键  in  字典

    返回的是True   或者  False

    更新字典

    添加、删除、更新修改 字典中的键值对:

    字典的操作

    字典提供了很多方法对字典操作:

    1.返回所有key值,dict.keys()  注意有个S

    作用:返回包含字典所有key的列表

    2.value,dict.values()

    作用:返回包含字典所有value的列表

    作用:返回包含字典所有value的列表

    3.dict.items()

    作用:返回包含所有(键,值)项的列表

    返回包含所有(键,值)项的列表

    4.清除字典dict.clear()

    作用:清除字典内容

    删除字典中的所有项或元素,无返回值(注意,不是删除字典,而是清空字典内容)

    5.dict.get(key , default=None)

    作用:指定 KEY,如果没有则default

    作用:返回字典中key对应的值,若key不存在,则返回default的值(default默认为None)

    6.dict.pop(key [,default])

    作用:剪切指定KEY值,如果KEY不存在,且没有给出default值,则引发KeyError异常

    作用:如果字典中存在key,则删除并返回key对应的value;如果key不存在,且没有给出default值,则引发KeyError异常

    7.dict.setdefault(key , default = None)

    作用:添加‘key’,

    则由dict[key] = default为其赋值

    作用:如果字典不存在key,则由dict[key] = default为其赋值

    8.dict.update(adict) 

    作用:合并字典

    作用:将字典adict中键值对添加到dict中 

    遍历字典只需要遍历它的键:

    (重点)字典的复制:

    当我们需要复制一份同样的字典,怎么操作呢?

    你可能觉得可以这样!

    直接用赋值符号,将dict1赋值给dict3

    当dict1内容改变之后

    发现dict3的内容也改变了!!!!

    可是我想要的是买一份和他一样的月饼,他的月饼吃完了,我的月饼也不能消失啊

    以上的称为浅复制

    什么是'浅'?

    可以这样理解,‘浅’指的是,复制的只是一个引用,还记得我们之前说的id()么

    复制后,ID一样,本质是一个东西并没有复制

    id( ) 的作用是找到变量或常量在内存中存的位置,发现dict1和dict3的id一样

    所以得出他们虽然是两个变量,但是变量的值是同一个

    也就是说,桌上有一盒月饼,可以说是我的,也可以说是你的

    你吃了一块

    月饼少了一块

    所以我的月饼少了一块

    因为这是我们共有的月饼

    所以浅复制示意图是:

    不同的变量名指向了同一个内存区域块

    相对应

    在字典中,深拷贝可以用引入copy模块实现

    复制后,ID不一样,本质是2个东西 所以清除dict1,dict2并没有清除

    相关文章

      网友评论

          本文标题:Python特色数据类型--字典

          本文链接:https://www.haomeiwen.com/subject/mbaktftx.html