美文网首页学习永远无止境手写笔记
孤荷凌寒自学python第十二天python字典类的其它操作

孤荷凌寒自学python第十二天python字典类的其它操作

作者: f9e86c58f23c | 来源:发表于2018-11-19 20:02 被阅读35次

    孤荷凌寒自学python第十二天python字典类的其它操作

    (完整学习过程屏幕记录视频地址在文末,手写笔记在文末)

    今天继续对dict类进行研究

    一、删除dict对象中的所有元素

    dictname.clear()

    此方法将删除dict对象中的全部元素,但字典对象本身还在。

    二、关于建立dict的副本,即创建一个dict对象的复制品。

    与之前学习到的list的副本创建一样,也分为两种情况:

    一种是创建dict的副本后,两个对象指向内存中的同一个地址,修改两个dict对象中的任意一个,都会同时修改两个dict对象的内容。

    另一种是创建dict的副本之后,两个对象有各自独立的内存地址,修改其中任意一个dict对象都一会对另一个dict对象有影响。

    我的理解是,第一种创建副本方法称之为:浅复制

    第二种创建副本的方法称之为:深复制

    1浅复制

    直接赋值

    新字典对象=原有字典对象

    2 深复制

    新字典对象=原有字典对象.copy()

    例:

    >>> print(dictA)

    {'姓名':

    '李四', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    >>> dictB=dictA  #浅复制

    >>> print(dictA)

    {'姓名':

    '李四', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    >>> print(dictB)

    {'姓名':

    '李四', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    >>> dictB['姓名']='张三'

    >>> print(dictB)

    {'姓名':

    '张三', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    >>> print(dictA)

    {'姓名':

    '张三', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    >>> dictC=dictA.copy()  #深复制

    >>> print(dictC)

    {'姓名':

    '张三', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    >>> dictC['性别']='女'

    >>> print(dictC)

    {'姓名':

    '张三', '性别': '女', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    >>> print(dictA)

    {'姓名': '张三', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    三、补充一种创建一个字典对象的方法:通过dict类的共享方法fromkeys()来创建

    新的字典变量=dict.fromkeys(tplKeys[,oneValue])

    等号右边dict是dict类名(或也叫命名空间?)

    fromkeys是类dict中的一个未经实例化就可使用的共享方法(python中是否是这样称呼的?)

           参数tplkeys是一个包含所有需要用到的key名称作为元素组成的元组。

    可选参数oneValue如果不指定,那么新建的字典的所有元素中每个key对应的value都是None

    如果指定oneValue,则表示每个key的value都一样,都是参数oneValue表示的值。

    例:

    >>> tplKey=('张三的成绩','李四的成绩','孤荷凌寒的成绩')

    >>> dictA=dict.fromkeys(tplKey)

    >>> dictC=dict.fromkeys(tplKey,90)

    >>> print(dictA)

    {'张三的成绩': None, '李四的成绩': None, '孤荷凌寒的成绩': None}

    >>> print(dictC)

    {'张三的成绩': 90, '李四的成绩': 90, '孤荷凌寒的成绩': 90}

    四、读取字典中指定key名称元素的value

    1 第一种方法,直接访问读取

    字典对象[keyname]

    将直接返回对应keyname名称的元素的value.

    当没有在字典中找到对应的keyname名称的元素时,将产生错误!

    2第二种方法,使用字典对象的get方法

    字典对象.get(keyname[,default=None])

    参数 keyname是指字典元素中的键名;

    可选参数default=None,表示 如果在字典中没有找到对应keyname名称的元素时,就返回此defalut参数指定的默认值。

    此可选参数并不是关键字参数,书写时不能如格式上那样写成:default=None这样的格式,而比如说应当只能写None.

    此时不会报错。

    3 第三种方法,使用字典对象的setdefault方法

    字典对象.setdefault(keyname[,default=None])

    经实际测试,此方法与get方法没有区别。

    唯一的不同在于:

    如果在字典对象中没有找到对应的keyname名称的元素——

    get方法只是返回可选参数default指定的value值,但不会对字典对象的内容作任何修改。

    setdefault方法在返回可选参数default指定的value值后,还会将新指定的keyname添加到字典中去,并设置对应value为default指定的value值。

    测试:

    >>> print(dictC)

    {'张三的成绩': 90, '李四的成绩': 90, '孤荷凌寒的成绩': 90}

    >>> intVale=dictC['张三的成绩']

    >>> print(intVale)

    90

    >>> intValue=dictC['王五的成绩']

    Traceback (most recent call last):

      File"", line 1, in

       intValue=dictC['王五的成绩']

    KeyError: '王五的成绩'

    >>> intValue=dictC.get('王五的成绩')

    >>> print(intValue)

    None

    >>> intValue=dictC.get('王五的成绩',99)

    >>> print(intValue)

    99

    >>> print(dictC)

    {'张三的成绩': 90, '李四的成绩': 90, '孤荷凌寒的成绩': 90}

    >>> intValue=dictC.setdefault('王五的成绩',100)

    >>> print(intValue)

    100

    >>> print(dictC)

    {'张三的成绩': 90, '李四的成绩': 90, '孤荷凌寒的成绩': 90, '王五的成绩': 100}

    五、吞并另一个字典的所有元素

    字典对象的update()方法可以将另一个字典的所有元素追加到自己的末尾。

    当前字典.update(另一个字典)

    执行此方法后,当前字典的元素增加,所增加的元素为另一个字典中的全部元素。而另一个字典的内容没有任何变化。

    如果存在两个字典的部分元素的key值相同,则用另一个字典中的同名的key值元素的value来覆盖当前字典。

    测试:

    >>> print(dictC)

    {'张三的成绩': 90, '李四的成绩': 90, '孤荷凌寒的成绩': 90, '王五的成绩': 100}

    >>> dictD={'孤荷凌寒的成绩': 75,'赵六的成绩':85}

    >>> dictC.update(dictD)

    >>> print(dictC)

    {'张三的成绩': 90, '李四的成绩': 90, '孤荷凌寒的成绩': 75, '王五的成绩': 100, '赵六的成绩': 85}

    六、获取字典的嵌套元组列表方式的表示形式

    测试:

    >>> print(dictC)

    {'张三的成绩': 90, '李四的成绩': 90, '孤荷凌寒的成绩': 75, '王五的成绩': 100, '赵六的成绩': 85}

    >>> lstC=dictC.items()

    >>> print(lstC)

    dict_items([('张三的成绩', 90), ('李四的成绩', 90), ('孤荷凌寒的成绩', 75), ('王五的成绩', 100), ('赵六的成绩', 85)])

    七、获取字典中所有元素的key,并作为列表返回

    dictname.keys()

    此方法将返回字典中所有元素的key组成的一个列表对象。

    测试:

    >>> dictTemp={'姓名': '李四', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    >>> print(dictTemp)

    {'姓名':

    '李四', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    >>> lstKey=dictTemp.keys()

    >>> print(lstKey)

    dict_keys(['姓名', '性别', '身高', '体重', '职业', '爱好'])

    八、获取字典中的所有元素的value,并作为一个列表返回

    dictname.values()

    此方法将返回字典中所有元素的value组成的一个列表对象.

    测试:

    >>> print(dictTemp)

    {'姓名': '李四', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    >>> lstValue=dictTemp.values()

    >>> print(lstValue)

    dict_values(['李四', '男', '180', '74', '经理', '书法'])

    九、将第七、八点获取到的key列表和value列表又重新组合成字典

    要通过zip函数将两个列表进行表格生成后,再使用dict函数转换为字典。

    具体做法测试如下 :

    >>> print(lstKey)

    dict_keys(['姓名', '性别', '身高', '体重', '职业', '爱好'])

    >>> print(lstValue)

    dict_values(['李四', '男', '180', '74', '经理', '书法'])

    >>> dictNew=dict(zip(lstKey,lstValue))  #这是真正执行此操作的语句

    >>> print(dictNew)

    {'姓名': '李四', '性别': '男', '身高': '180', '体重':

    '74', '职业': '经理', '爱好': '书法'}

    ——————————

    今天整理的学习笔记完成,最后例行说明下我的自学思路:

    根据过去多年我自学各种编程语言的经历,认为只有真正体验式,解决实际问题式的学习才会有真正的效果,即让学习实际发生。在2004年的时候我开始在一个乡村小学自学电脑 并学习vb6编程语言,没有学习同伴,也没有高师在上,甚至电脑都是孤岛(乡村那时还没有网络),有的只是一本旧书,在痛苦的自学摸索中,我找到适应自己零基础的学习方法:首先是每读书的一小节就作相应的手写笔记,第二步就是上机测试每一个笔记内容是否实现,其中会发现书中讲的其实有出入或错误,第三步就是在上机测试之后,将笔记改为电子版,形成最终的修订好的正确无误的学习笔记。

    通过反复尝试错误,在那个没有分享与交流的黑暗时期我摸黑学会了VB6,尔后接触了其它语言,也曾听过付费视频课程,结果发现也许自己学历果然太低,就算是零基础的入门课程,其实也难以跟上进度,讲师的教学多数出现对初学者的实际情况并不了解的情况,况且学习者的个体也存在差异呢?当然更可怕的是收费课程的价格往往是自己难以承受的。

    于是我的所有编程学习都改为了自学,继续自己的三步学习笔记法的学习之路。

    当然自学的最大问题是会走那么多的弯路,没有导师直接输入式的教学来得直接,好在网络给我们带来无限搜索的机会,大家在网络上的学习日志带给我们共享交流的机会,而QQ群等交流平台、网络社区的成立,我们可以一起自学,互相批评交流,也可以获得更有效,更自主的自学成果。

    于是我以人生已过半的年龄,决定继续我的编程自学之路,开始学习python,只希望与大家共同交流,一个人的独行是可怕的,只有一群人的共同前进才是有希望的。

    诚挚期待您的交流分享批评指点!欢迎联系我加入从零开始的自学联盟。

    这个时代互联网成为了一种基础设施的存在,于是本来在孤独学习之路上的我们变得不再孤独,因为网络就是一个新的客厅,我们时刻都可以进行沙龙活动。

    非常乐意能与大家一起交流自己自学心得和发现,更希望大家能够对我学习过程中的错误给予指点——是的,这样我就能有许多免费的高师了——这也是分享时代,社区时代带来的好福利,我相信大家会的,是吧!

    根据完全共享的精神,开源互助的理念,我的个人自学录制过程是全部按4K高清视频录制的,从手写笔记到验证手写笔记的上机操作过程全程录制,但因为4K高清文件太大均超过5G以上,所以无法上传至网络,如有需要可联系我QQ578652607对传,乐意分享。上传分享到百度网盘的只是压缩后的720P的视频。

    我的学习过程录像百度盘地址分享如下:(清晰度:1280x720)

    链接:https://pan.baidu.com/s/1N_WrQuQEfBrW0x23hlb0Ug 密码:jvul

    Bilibili:

    https://www.bilibili.com/video/av35778604/

    喜马拉雅语音笔记:

    https://www.ximalaya.com/keji/19103006/137845447

    相关文章

      网友评论

      本文标题:孤荷凌寒自学python第十二天python字典类的其它操作

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