Python--小甲鱼学习笔记--第26课:字典(dict())
来源:互联网 发布:淘宝把买家加入黑名单 编辑:程序博客网 时间:2024/05/18 01:14
1、创建字典:dict1 = dict()
2、字典的一种内建方法:dict1.fromkeys(s[,v])
3、访问字典的方法:
1)dict1.keys()、dict1.values()、dict1.items()
2)dict1.get(),对应键的值不存在时返回None,这样程序就不会报错
3)key in dict1:查找的是键,而不是值
4)dict1.clear():清空字典,不建议使用直接赋空值的方法:dict1 = {}
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'}
0.Python的字典是否支持一键(Key)多值(Value)?
不支持,对相同的键再次赋值会将上一次的值直接覆盖。
1.在字典中,如果试图为一个不存在的键(Key)赋值会怎样?
会自动创建对应的键(Key)并添加相应的值(Value)进去。
2.成员资格操作符(in和notin)可以检查一个元素是否存在序列中,当然也可以用来检查一个键(Key)是否存在字典中,那么请问哪种的检查效率更高些?为什么?
在字典中检查键(Key)是否存在更高效。因为字典的原理是使用哈希算法存储,一步到位,不需要使用查找算法进行匹配,因此时间复杂度是O(1),效率非常高。
3. Python对键(Key)和值(Value)有没有类型限制?
Python对键的要求相对要严格一些,要求它们必须是可哈希(Hash)的对象,不能是可变类型(包括变量、列表、字典本身等)。但是Python对值是没有任何限制的,它们可以是任意的Python对象。如果不清楚哈希原理以及字典的存放原理的童鞋,推荐阅读:你知道Python的字典Dict是如何存储的吗?(http://bbs.fishc.com/thread-45016-1-1.html)
4.请目测下边代码执行后,字典dict1的内容是什么?
>>> dict1.fromkeys((1,2,3), ('one','two','three'))
>>> dict1.fromkeys((1,3),'数字')
结果为{1: '数字', 3: '数字'}。fromkeys方法是直接创建一个新的字典,不要试图使用它来修改一个原有的字典,因为它会直接无情的用把整个字典给覆盖掉。
5. 如果你需要将字典dict1= {1: 'one', 2: 'two', 3: 'three'}拷贝到dict2,你应该怎么做?
可以利用字典的copy()方法:dict2 = dict1.copy()。
>>> dict1= {1: 'one', 2: 'two', 3: 'three'}>>> dict2= dict1.copy()
6. 尝试编写一个用户登录程序(这次尝试将功能封装成函数),程序实现如图:
代码实现:
def load(): usersCount = dict() while True: print('\n') print('''|--- 新建用户:N/n ---||--- 登录账号:E/e ---||--- 退出程序:Q/q ---|''') instr = input('|--- 请输入指令代码:') if (instr == 'Q') or (instr == 'q'): break user_name = input('请输入用户名:') if (instr == 'N') or (instr == 'n'): while (user_name in usersCount): user_name = input('此用户名已经被使用,请重新输入:') keywords = input('请输入密码:') usersCount.setdefault(user_name, keywords) print('注册成功,赶紧试试登录吧^_^') elif (instr == 'E') or (instr == 'e'): if usersCount: while (user_name not in usersCount): user_name = input('您输入的用户名不存在,请重新输入:') keywords = input('请输入密码:') while keywords != usersCount[user_name]: keywords = input('密码错误,请重新输入:') print('欢迎进入XXOO系统,请点击右上角的X结束程序!') break else: print('该账户未注册,请您先注册!') load()
- Python--小甲鱼学习笔记--第26课:字典(dict())
- Python--小甲鱼学习笔记--第25课:初学dict()
- Python--小甲鱼学习笔记--第32课:异常处理
- Python--小甲鱼学习笔记--第30课:文件系统(os、os.path)
- Python--小甲鱼学习笔记--第28课:文件(文件打开方式、文件对象方法)
- Python--小甲鱼学习笔记--第27课:集合(set()、frozenset())
- Python--小甲鱼学习笔记--第33课:异常处理(try-except, try-finally, raise)
- python学习笔记(四)字典(dict)
- Python--小甲鱼学习笔记--第31课:pickle和文件
- Python--小甲鱼学习笔记--第29课:文件读写、文件对比、文件分割、内容显示
- Python--小甲鱼学习笔记--第34课:else语句及with语句
- Python学习笔记(四)—字典(dict)
- Python学习笔记之映射类型字典(dict)
- Python学习笔记之映射类型字典(dict)
- python 学习笔记——字典(dict)
- Python学习笔记:字典(dict)有关内容
- Python学习笔记 - 8.字典(Dict)
- redis学习笔记(3)---字典dict
- 这是我的第一篇博客,以后要积极更新哦
- Mysql 充电站SQL查询1--171221--mysql-sql
- 破解简单的Android签名检查
- 堆排序
- es6快速入门(4)--数组的扩展
- Python--小甲鱼学习笔记--第26课:字典(dict())
- 446. Arithmetic Slices II
- 查看端口是否启用
- 数论基础:矩阵快速幂解斐波那契数列Yet another Number Sequence(UVA)
- HiveServer2 获取日志
- pat甲级1064-Complete Binary Search Tree
- UI 一一 UIWebView的应用小案例
- 第一章:STM32串口ISP下载
- Visual studio + IIS环境下跨域项目,移动端可触发断点调试的WEB服务器布署