零基础入门学习python(24)-字典(2):字典的内置方法

fromkeys()

  • fromkeys()方法用于创建并返回一个新的字典
  • 它有两个参数:第一个参数是字典的键;第二个参数是可选的,是传入键对应的值,如果不提供,默认是None
    在这里插入图片描述

访问字典的几个方法

keys()

  • 返回字典中的键
    在这里插入图片描述

values()

  • 返回字典中的值
    在这里插入图片描述

items()

  • 返回字典中所有的键值对(项)
    在这里插入图片描述
    当去索引字典中不存在的键时,会报错
    在这里插入图片描述

get()

  • get()方法提供了更宽松的方式去访问字典项,当键不存在时,get()方法并不会报错,只是默默地返回了一个None
    在这里插入图片描述
    当不知道一个键是否在字典中,就可以使用成员资格操作符(in或not in)来判断
    在这里插入图片描述
    注意:在字典中检查键的成员资格比序列更加高效,当数据规模相当大时,两者差距就会很明显,因为字典是采用哈希方法一对一找到成员,而序列则是采取迭代的方式逐个比对,此外,在字典里查找的是键而不是值,但在序列中查找的是元素的值而不是元素的索引

clear()

  • 清空一个字典的方法

在这里插入图片描述
通过创建一个空字典的方式清空字典有一定的弊端
在这里插入图片描述
在这里插入图片描述

copy()

  • copy()方法是用于拷贝(浅拷贝)整个字典
  • 注意,不能把赋值当作浅拷贝
    在这里插入图片描述

pop()

  • 给定键弹出对应的值
    在这里插入图片描述

popitem()

  • 弹出一个项
    在这里插入图片描述

setdefault()

  • setdefault()方法和get()方法有点相似,但是, setdefault()方法在字典中找不到相应的键时会自动添加
    在这里插入图片描述

update()

  • 利用字典或映射关系用来更新字典
    在这里插入图片描述

字典在收集参数中的应用

  • 收集参数其实有两种打包形式:一种是以元组的形式打包;另一种则是以字典的形式打包
  • 当参数带两个星号(**)时,传递给函数的任意数量的key=value实参就会被打包进一个字典中
    在这里插入图片描述
  • 有打包就有解包
    在这里插入图片描述

Task

0. Python的字典是否支持一键(Key)多值(Value)?
不支持,对相同的键再次赋值会将上一次的值直接覆盖。

1. 在字典中,如果试图为一个不存在的键(Key)赋值会怎样?
会自动创建对应的键(Key)并添加相应的值(Value)进去

2. 成员资格操作符(in和not in)可以检查一个元素是否存在序列中,当然也可以用来检查一个键(Key)是否存在字典中,那么请问哪种的检查效率更高些?为什么?
后者更高。因为字典是采用哈希方法一对一找到成员,而序列则是采取迭代的方式逐个对比

3. Python对键(Key)和值(Value)有没有类型限制?
字典的键必须独一无二,但值则不必。值可以取任何数据类型,但必须是不可变的,如字符串、数或元组
Python对键的要求相对要严格一些,要求它们必须是可哈希(Hash)的对象,不能是可变类型(包括变量、列表、字典本身等)。

但是Python对值是没有任何限制的,它们可以是任意的Python对象。

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

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

在这里插入图片描述
fromkeys方法是直接创建一个新的字典,不要试图使用它来修改一个原有的字典,因为它会直接无情的用把整个字典给覆盖掉。
5. 如果你需要将字典dict1 = {1: ‘one’, 2: ‘two’, 3: ‘three’}拷贝到dict2,你应该怎么做?

>>> dict1 = {1: 'one', 2: 'two', 3: 'three'}
>>> dict2 = dict1.copy()

在这里插入图片描述
6. 尝试编写一个用户登录程序(这次尝试将功能封装成函数),程序实现如图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值