今天继续对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', '职业': '经理', '爱好': '书法'}

欢迎联系我加入倡导终身学习终身成长的社群——

就是要学社群www.941xue.com/index.aspx

python获取类的所有方法、并存放到字典中_孤荷凌寒自学python第十二天python字典类的其它操作...相关推荐

  1. python输入姓名 性别身高_孤荷凌寒自学python第十一天初识Python的字典类

    孤荷凌寒自学python第十一天初识Python的字典类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的字典其实是一张二维对照表 下面举例说明: 键名Key 姓名 性别 身高 ...

  2. python自学第8天字典_孤荷凌寒自学python第十一天初识Python的字典类

    孤荷凌寒自学python第十一天初识Python的字典类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的字典其实是一张二维对照表 下面举例说明: 键名Key 姓名 性别 身高 ...

  3. python 保存文件 吃内存_孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化...

    孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.什么是序列化与反序列化 序列化是指将内存中的数据进行指 ...

  4. python 循环控制语句结束_孤荷凌寒自学python第十五天python循环控制语句

    python中只有两种循环控制语句 一.while循环 while 条件判断式 1: 如果 条件判断式1 返回True 将执行此代码块的内容 而且此代码块的内容执行完成后 将重新判断条件判断式1 co ...

  5. python 优先级继承_孤荷凌寒自学python第二十二天python类的继承

    (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中定义的类可以继承自其它类,所谓继承的概念,我的理解 是,就是一个类B继承自类A,意味着类B的内部代码块中就算不写任何代码,类B仍然 ...

  6. 孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档

    孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库 ...

  7. 孤荷凌寒自学python第六天 列表的嵌套与列表的主要方法

    孤荷凌寒自学python第六天 列表的嵌套与列表的主要方法 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) (同步的语音笔记朗读:https://www.ximalaya.com/keji/1 ...

  8. 孤荷凌寒自学python第三十八天初识python的线程控制

    孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看着 ...

  9. 孤荷凌寒自学python第四十一天python的线程同步之Event对象

    孤荷凌寒自学python第四十一天python的线程同步之Event对象 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 鉴于Lock锁与RLock锁均宣告没有完全完成同步文件操作的问题,于是 ...

最新文章

  1. 为甚serve 修改dev不能跑_初探逆向将电缆调制解调器改装为SDR
  2. 白话Elasticsearch42-深入聚合数据分析之案例实战__bucket filter:统计牌品最近一个月的平均价格(Filter Aggregation)
  3. Hive几种数据导入方式
  4. CVE-2018-4407 苹果设备远程溢出漏洞
  5. 在VMWare上安装Win3.2
  6. 工厂模式解耦---控制反转
  7. 京东Q2营收同比增加26.2%,股价上涨超3%
  8. iOS笔记(一)GCD多线程:信号量和条件锁
  9. 转 Spring是如何管理Hibernate和Struts的(二)
  10. Ubuntu tomcat
  11. 美国大选数据挖掘相关论文笔记(A 61-million-person experiment in social influence and political mobilization)...
  12. Church's Coupon Performance Test Script
  13. Java实现搭积木_Java搭积木游戏
  14. 若梦博客-优质个人博客
  15. k2000显卡相当于gtx_电脑中的显卡是什么样干什么样的?NVDIA推出的两块Quadro显卡K1000M和K2000M性能究竟差多少...
  16. FC炸弹人 java源码下载
  17. 索德系统服务器,只有游戏玩家才知的十大烦恼 想玩游戏服务器挂了
  18. Android调用系统设置界面
  19. BSGS 大步小步算法
  20. c语言函数指针的多种赋值方法

热门文章

  1. 用python来爬取网络小说
  2. 思维导图怎么画?怎么画出简单又漂亮的思维导图
  3. C++ 标识符的作用域
  4. JDK安装及环境变量配置
  5. CentOS7 通过yum安装dnf失败,提示No package dnf available的解决办法
  6. N97连接WIFI提示预置共享密钥无效
  7. python 爬取百度知道,Python 爬虫爬取百度百科网站
  8. [3]传奇3服务器源码分析一 DBServer
  9. 决战阿法狗 柯洁会使出人类最后的杀招?
  10. COCI 2015/2016 PROKLETNIK(单调栈+线段树)