本期内容详解:
1、dict()是一个工厂函数,调用后会生成该类型的实例
2、字典的一种内建方法:dict1.fromkeys(s[,v])
3、访问字典的方法:
1)dict1.keys()、dict1.value()、dict1.items()(返回每一项)
2)dict1.get(),对应键的值不存在的话返回一个None,这样程序就不会报错
3)key in dict1:查找的是键,而不是值
4)dict1.clear():清空字典,不建议使用直接赋空值的方法:dict1 = {}
例如:

    >>> a = {'A','B'}  >>> b = a  >>> a = {}  >>> b  {'B', 'A'}  >>> a  {}  

5)dict1.copy():浅拷贝
例如:

    >>> a = {1:'one',2:'two',3:'three'}  >>> b = a.copy()  >>> c = a  >>> c[4] = 'four'  >>> c  {1: 'one', 2: 'two', 3: 'three', 4: 'four'}  >>> a  {1: 'one', 2: 'two', 3: 'three', 4: 'four'}  >>> b  {1: 'one', 2: 'two', 3: 'three'}  

6)dict1.pop():给定键弹出相应值
7)dict1.popitem():给定键弹出相应项(包括键和值)
8)dict1.setdefault():找不到给定键对应的值话会自动在字典中创建一个基于该键的项(区别于dict1.get()的结果)
9)dict1.update():根据一个字典或映射关系去更新另一个字典
例如以下用法(结果类似于在字典中添加项或更新已存在键对应的值):

    >>> a  {1: 'one', 2: 'two', 3: 'three', 4: 'four'}  >>> d = {7:'seven'}  >>> a.update(d)  >>> a  {1: 'one', 2: 'two', 3: 'three', 4: 'four', 7: 'seven'}  

Python的字典是否支持一键(Key)多值(Value)?

答:不支持,对相同的键再次赋值会将上一次的值直接覆盖。

在字典中,如果试图为一个不存在的键(Key)赋值会怎样?

答:会自动创建对应的键(Key)并添加相应的值(Value)进去。

成员资格操作符(in和not in)可以检查一个元素是否存在序列中,当然也可以用来检查一个键(Key)是否存在字典中,那么请问哪种的检查效率更高些?为什么?

答:在字典中检查键(Key)是否存在比在序列中检查指定元素是否存在更高效。因为字典的原理是使用哈希算法存储,一步到位,不需要使用查找算法进行匹配,因此时间复杂度是O(1),效率非常高。

Python对键(Key)和值(Value)有没有类型限制?

答:Python对键的要求相对要严格一些,要求它们必须是可哈希(Hash)的对象,不能是可变类型(包括变量、列
表、字典本身等)。
但是Python对值是没有任何限制的,它们可以是任意的Python对象。
如果不清楚哈希原理以及字典的存放原理的童鞋,推荐阅读下小甲鱼帮你整理的这篇文章:你知道Python的字典
(Dict)是如何存储的吗?(http://bbs.fishc.com/thread-45016-1-1.html)

请目测下边代码执行后,字典dict1的内容是什么?

    >>> dict1.fromkeys((1, 2, 3), ('one', 'two', 'three'))   >>> dict1.fromkeys((1, 3), '数字')  

答:执行完成后,字典dict1的内容是:{1: ‘数字’, 3: ‘数字’}
这里要注意的是,fromkeys方法是直接创建一个新的字典,不要试图使用它来修改一个原有的字典,因为它会直接无情的用把整个字典给覆盖掉。

如果你需要将字典dict1 = {1: ‘one’, 2: ‘two’, 3: ‘three’}拷贝到dict2,你应该怎么做?

答:可以利用字典的copy()方法:dict2 = dict1.copy(),在其他语言转移到Python小伙伴们刚开始可能会习惯性的直接用赋值的方法(dict2 = dict1),这样子做在Python中只是将对象的引用拷贝过去而已(如笔记中提到的例子)。

尝试编写一个用户登录程序(这次尝试将功能封装成函数),程序实现如图:

    def Load():  dict1 = {'小甲鱼':'FishC'}  while 1:  key = input(''''' |--- 新建用户:N/n ---| |--- 登录帐号:E/e ---| |--- 退出程序:Q/q ---| |--- 请输入指令代码:''')  if key == 'N' or key == 'n':  temp_name = input('请输入用户名:')  while temp_name in dict1:  temp_name = input('此用户名已经被使用,请重新输入:')  temp_password = input('请输入密码:')  dict1[temp_name] = temp_password  print('注册成功,赶紧试试登录吧^_^')  continue  elif key == 'E' or key == 'e':  temp_name = input('请输入用户名:')  while temp_name not in dict1:  temp_name = input('您输入的用户名不存在,请重新输入:')  temp_password = input('请输入密码:')  while temp_password != dict1[temp_name]:  temp_password = input('密码错误,请重新输入:')  print('欢迎进入系统,请点右上角的X结束程序!')  continue  elif key == 'Q' or key == 'q':  break  Load()  

FishC笔记—26 讲 字典:当索引不好用时2相关推荐

  1. 小甲鱼python的课后题好难_小甲鱼《零基础学习Python》课后笔记(二十六):字典——当索引不好用时2...

    测试题 0.Python的字典是否支持一键(Key)多值(Value)? 不支持.对相同的键赋值会覆盖原来的值.>>> dict2 = {1:'one',1:'two',3:'thr ...

  2. P27 026字典:当索引不好用时1----20201005

    这里写目录标题 P27 026字典:当索引不好用时1----20201005 P31 030文件系统:介绍一个高大上的东西1006 P32 031永久存储:研制一缸美味的泡菜1006 P33 032异 ...

  3. Python 字典:当索引不好用时

    字典:当索引不好用时 我们已经了解到,列表这种数据结构适用于将值组织到一个结构中,并且通过编号对其引用.本章学习一种通过`名字来引用值的数据结构.这种类型的数据结构称为映射.字典是Python中唯一内 ...

  4. python学习笔记之三:字典,当索引不好用时

    字典是python中唯一内建的映射类型.字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里. 键可以是数字,字符串甚至是元组. 1. 创建和使用字典 字典可以通过下面的方式创建: pho ...

  5. 零基础入门学习Pyhton(23)字典:当索引不好用时

    Python中的字典 Python的字典把这个字称为"键"(key),把其对应的含义称为"值(value)" Python的字典在有些地方称为哈希(hash) ...

  6. Python基础教程:字典(当索引不好用时)

    一.定义与概念 1.字典是针对非序列集合而提供的一种数据类型 举例:检索学生信息. "<键><值>对". 键(即身份证号码) 值(即学生信息). " ...

  7. python 小甲鱼 好不好_[Python]小甲鱼Python视频第025课(字典:当索引不好用时)课后题及参考解答...

    # -*- coding: utf-8 -*- """ Created on Fri Mar 8 10:04:08 2019 @author: Administrator ...

  8. 11.字典:当索引不好用时

    字典:key–value 字典不是序列类型,它是映射类型 (1)创建字典 ① >>> dict = {} #空字典 >>> dict {} ②直接按照字典的格式定义 ...

  9. [Python]小甲鱼Python视频第026课(字典:当索引不好用时2)课后题及参考解答

    # -*- coding: utf-8 -*- """ Created on Fri Mar 8 10:32:20 2019@author: Administrator ...

  10. FishC笔记—19 讲 函数:我的地盘听我的

    本期内容详解: 1.函数与过程:过程(procedure)是简单的,特殊且没有返回值的:函数(Function)有返回值 Python严格来说只有函数没有过程 2.局部变量:在局部生效如在函数中定义的 ...

最新文章

  1. Sqlite学习笔记(四)SQLite-WAL原理(转)
  2. 测试isEmpty null 方法
  3. 《AlwaysRun!团队》第四次作业:项目需求调研与分析
  4. leetcode 43. Multiply Strings | 43. 字符串相乘(Java)
  5. 提交Form表单,submit之前做js判断处理
  6. 同时打开多个VC工程
  7. 解决微信小程序开发中wxss中不能用本地图片
  8. springboot pom文件基本配置
  9. arcgis悬挂点修改_ArcGIS对进行数据拓扑修改
  10. 速领,阿里巴巴Java开发手册终极版
  11. 微信小程序学习笔记4
  12. AI--调用百度OCR文字识别API进行图片文字识别
  13. Android 减小APK包体大小方法总结
  14. 放鸡蛋问题:相同元素分配到相同的空间
  15. Flex布局(弹性布局)-图文介绍
  16. wpf 如何让当前窗口隐藏
  17. 云服务器搭建Java自动化测试框架
  18. 适合Python新手的爬虫练习:网易LOFTER图片爬虫(二)
  19. 人脑功能连接与相似性分析:基于Python
  20. 括号配对检测python123_括的意思

热门文章

  1. c语言数组的程序,C语言数组程序举例
  2. GIS应用实例--模型预测、多元回归、空间自相关分析
  3. 微信小程序map组件拖拽地图获取经纬度,地址,带定位点范围(中心点固定)
  4. 格兰杰检验的基本步骤_Toda-Yamamoto 格兰杰因果检验 TY-Granger方法
  5. Error:(199) undefined reference to `__android_log_print'
  6. InstallShield打包程序
  7. Android11 WAPI证书安装流程
  8. Java逻辑思维训练题
  9. 数学建模之数据比较与影响因素分析
  10. JAVA代码爬虫获取网站信息