7.1.2 字典的各种内置方法
在序列里为不存在位置赋值,会出现错误;
而在字典不存在得位置赋值,会创建。工厂函数(类型)
以前学过 str(),int(),list(),tuple().......

1.fromkeys() 用于创建和返回一个新的字典 不是修改
2个参数 第一个是键,第二个可选,默认None
举例如下
dict1={}
dict1.fromkeys((1,2,3))
print(dict1)
------------------------
{} #????????????????????? 原始字典是空的,方法返回的是一个新字典!!!!
改写如下
dict1={}
print(dict1.fromkeys((1,2,3)))
----------------------------
{1: None, 2: None, 3: None}
=======================================
dict2={}
print(dict2.fromkeys((1,2,3),"Number"))
----------------------------
{1: 'Number', 2: 'Number', 3: 'Number'}
==========================================
dict3={}
print(dict3.fromkeys((1,2,3),("one","two","three")))
-----------------------------------
{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}
============================================================
dict3字典改新过程后,并不是对应关系,而是将后面的所有当作一个值。

2.keys()和values()和items()
dict1={}
dict1=dict1.fromkeys(range(32),"赞")
print(dict1)
-----------------------------
{0: '赞', 1: '赞', 2: '赞', 3: '赞', 4: '赞',......31 '赞'}
=======================================
dict1={}
dict1=dict1.fromkeys(range(32),"赞")
for eachkey in dict1.keys():
print(eachkey)
-------------
0
1
2
.
.
31
=====================================
dict1={}
dict1=dict1.fromkeys(range(32),"赞")
for eachvalue in dict1.values():
print(eachvalue)
--------------

.
.
.

=========================================
dict1={}
dict1=dict1.fromkeys(range(32),"赞")
for eachItem in dict1.items():
print(eachItem)
---------------------------
(0, '赞')
(1, '赞')
.
.
(31, '赞')
===================================================
当我们不明确字典内部的键和项的时候,引用会出错。如下
dict1={}
dict1=dict1.fromkeys(range(32),"赞")
print(dict1[32])
-------------------------------
KeyError: 32 #提示没有这个键
===================================================
如何解决以上问题呢?
3.get() 括号内填写的是键 不是序列号
dict2={1:"one",2:"two",3:"three"}
print(dict2.get(3))
print(dict2.get(0))
-----------------------
three
None
===========================================
如果想找不到该参数时候,返回指定值 比如“木有”:
print(dict2.get(32,"木有"))
==============================================
如果不知道一个键 是否再字典中 可以用成员资格操作符 in或not in
dict2={1:"one",2:"two",3:"three"}
print(3 in dict2)
print(4 in dict2)
print(5 not in dict2)
------------------------
True
False
True
==================================================
再字典中检查键的成员资格比序列更高效,当数据规模大的时候,差距很明显。
原因:字典采用哈希方法一对一找到成员,序列采用的是迭代的方式阻隔比对。
清空字典,则使用 clear()方法
dict2={1:"one",2:"two",3:"three"}
dict2.clear()
print(dict2)
-------------------
{}
===============================================
使用变量名赋值为一个空字典方法来清空
dict2={1:"one",2:"two",3:"three"}
dict2={}
print(dict2)
-----------------------
{}
==================效果看似一样啊?思考如下代码 ==========================
a={"name":"Daodantou"}
b=a
print(b)
a={}
print(a)
print(b)
-------------
{'name': 'Daodantou'}
{}
{'name': 'Daodantou'}
=========================
a={"name":"Daodantou"}
b=a
print(b)
a.clear()
print(a)
print(b)
---------------------------
{'name': 'Daodantou'}
{}
{}
===============================
数据密码时候,采用赋值为空字典存在安全隐患,而clear()方法安全些。
拓展思考 在这个问题上 有关 整型 字符串区别
a=1
b=a
print(b)
a=7
print(a)
print(b)
---------
1
7
1
-------=================-----
a="坦克"
b=a
print(b)
a="飞机"
print(a)
print(b)
--------------------
坦克
飞机
坦克
=================================

转载于:https://www.cnblogs.com/daodantou/p/10337770.html

第七章 字典和集合[DDT书本学习 小甲鱼]【2】相关推荐

  1. 第五章 列表、元组和字符串[DDT书本学习 小甲鱼]【8】

    3 Python的转义字符及含义 ------------------------------------- \'单引号 \r回车符 \"双引号 \f换页符 \a发出声 \o八进制代表的字符 ...

  2. 第五章 列表、元组和字符串[DDT书本学习 小甲鱼]【6】

    5.3.1 字符串的各种内置方法 表5-1很多暂时略掉!!!!!!!!! 选择几个常用的演示一下 casefold()方法,它的作用是将字符串的所有字符变为小写 代码 str1="DaoDa ...

  3. 第五章 列表、元组和字符串[DDT书本学习 小甲鱼]【2】

    5.1.7 一些常用操作符 代码 lis1=[123] lis2=[456] print(lis1>lis2) ---------------- False lis1=["abc&qu ...

  4. Python程序开发——第四章 字典与集合

    目录 一.字典 (一)字典的创建 (二)字典的访问 (三)字典的增删改查 1.字典的添加 2.字典的删除 3.字典的修改 4.字典的查询 二.集合 (一)集合的分类 (二)集合的创建 (三)集合元素的 ...

  5. Python 课课练 (七):字典与集合课后题

    目录 一.字典与集合课后题 练习前置知识 Chapter One : 开启 Python 之旅 Chapter Two : Python 语言基础.运算符与表达式.程序的控制结构合集 Chapter ...

  6. java第七章jdbc课后简答题_java学习路线流程

    第一阶段JavaSE: 第一章:jdk的安装与配置 第二章:Java基础语法: 变量.常量.数据类型.关键字 运算符和表达式:运算符:+.-.*./ 表达式:正则表达式 关系及逻辑运算符:关系运算符: ...

  7. 《信息简史》第七章人物、事件、名言收集小感

    吴军老师的<文明之光>一书自上市以来,广受读者的称赞,并入选2014中国好书排行榜. 斯坦福大学物理系的张首晟教授为本书写了一篇名为<大数据时代读大历史--感受物理.科技.人文的跨界 ...

  8. 第七章:Java_集合

    集合概述 对象的存储:①数组(基本数据类型 & 引用数据类型) ②集合(引用数据类型) 数组存储数据的弊端:长度一旦初始化以后,就不可变: 真正给数组元素赋值的个数没有现成的方法可用. Col ...

  9. 第七章 人工智能,7.3 深度学习与自然语言处理在智能语音客服中的应用(作者: 余慈)...

    7.3 深度学习与自然语言处理在智能语音客服中的应用 1. 前言 95188电话的支付宝热线目前已经用纯语音交互流程全面代替了传统的按键流程,这个我们称之为"蚁人"的智能语音客服会 ...

最新文章

  1. 2018/-4-11遗传,差分进化,免疫,蚁群算法中的公式
  2. 网页自适应和响应式的区别与分析总结
  3. joda time, jackson 与 scala 反射
  4. 池化方法总结(Pooling)
  5. java中异常处理机制
  6. Bug邮件队列插入不了
  7. oracle rac em cluster name,ORACLE 11G RAC重建EM问题
  8. 数据挖掘开源项目立项
  9. 使用WebSocket绕过广告屏蔽插件
  10. 【JAVA基础篇】抽象类和接口的区别
  11. 搞定月薪30K的AI热门领域,这份书单请收好
  12. SpringMVC使用ModelAndView进行重定向
  13. 离散数学:构造性二难推理和破坏性二难定理的解释
  14. Latex中插入超链接/网址
  15. 数字电视CA原理与破解方式
  16. 统计学(第七版)贾俊平课后习题数据
  17. ABYY OCR 文字识别软件 V15. 安装教程
  18. U3D性能优化之MeshBaker(不带光照)
  19. 基于Zookeeper的分布式锁
  20. OpenWrt设置修改IP地址

热门文章

  1. vue router 原生html,Vue router 使用 History 模式导致页面请求 404
  2. Codeblocks无法输出中文和中文乱码解决方法(亲测可用)
  3. android采用什么图标单位,Android支持的长度单位
  4. 『数学』--数论--组合数+卢卡斯定理+扩展卢卡斯定理
  5. 分布式事务是啥?常用的解决方案有哪些?
  6. springcloud 之服务注册与发现 Eureka Client
  7. 数据挖掘之数据预处理
  8. 在命令行中打开远程端的图形应用程序
  9. 银行利率是5.45%,房贷是4.9%,有钱该提前还房贷还是存款?
  10. 去银行贷款,有中介和没中介的巨大差别