第七节课:字典

字典是无序的,它不能通过偏移量来索引,只能通过键来存取.
字典= {‘key‘:value} key:类似我们现实的钥匙,而value则是锁。一个钥匙开一个锁.
特点:
内部没有顺序,通过键来读取内容,可嵌套,方便我们组织多种数据结构,并且原地修改里面的内容,属于可变类型.
组成字典的键必须是不可变的数据类型,比如 数字、字符串,元组等. 列表是可变对象不能作为键.

键是字符串:info = {‘a‘:1,‘b‘:2}
键是数字: info2 = {1:‘a‘,2:‘b‘}
键是元组: cinfo = {(1,2,3):‘aaa‘,(3,4):‘bbb‘}
键是元组:dinfo = {(2,[2,3]):‘a‘,(3,4):‘b‘} 且元组中含可变对象,会报错

1. 创建字典: {} dict()
ainfo = {‘name‘:‘lilei‘, ‘age‘:20}
binfo = dict(name = ‘liming‘, age = 22)

2. 添加内容:a[‘xx‘] = ‘xx‘

binfo[‘phone‘] = ‘iphone5s‘ 不存在键,添加

3. 修改内容:a[‘xx‘] = ‘yy‘
binfo[‘phone‘] = ‘htc‘ 已经存在键,则修改。

update 参数是一个字典类型,他会覆盖相同键的值
ainfo.update({‘city‘:‘beojing‘,‘phone‘:‘nokia‘})
ainfo.update({‘city‘:‘beojing‘,‘phone‘:‘htc‘})

4. 删除 del clear pop
del ainfo[‘city‘]
del ainfo 删除 ainfo 对数据的引用,ainfo不存在了
binfo.clear() 删除字段的全部元素,为空字段, binfo才是存在的

pop方法:返回键值对应的值,并且删除原字典中的键和值
>>> a = dict(name = ‘liming‘, age = 22)
>>> a.pop(‘name‘)
‘liming‘

对比 列表的pop方法:通过下标索引,反馈下标对应的值,并从列表中删除下标对应的值

>>> binfo = []
>>> binfo.append(‘a‘)
>>> binfo.append(‘b‘)
>>> binfo.append(‘c‘)
>>> binfo
[‘a‘, ‘b‘, ‘c‘]
>>> binfo.pop(0)
‘a‘
>>> binfo
[‘b‘, ‘c‘]

相同点是删除反馈值并删除对应的值,不同点是字段的pop方法在异常的时候可以返回你想要的值

>>> a = [1,2,3]
>>> a.pop(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop index out of range
>>> b = {‘a‘:1,‘b‘:2}
>>> b.pop(‘c‘)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: ‘c‘
>>> b.pop(‘c‘,‘meiyouzhi‘)
‘meiyouzhi‘
>>> b
{‘a‘: 1, ‘b‘: 2}

5. in 和 has_key() 成员关系操作
5.1 phone in info
5.2 info.has_key(‘phone‘)

>>> a = {‘a‘:1,‘b‘:2}
>>> a
{‘a‘: 1, ‘b‘: 2}
>>> ‘a‘ in a
True
>>> ‘c‘ in a
False
>>> a.has_key(‘aa‘)
False
>>> a.has_key(‘a‘)
True

6. keys(): 返回的是列表, 里面包含了字段的 所有键
values():返回的是列表, 里面包含了字段的 所有值
items: 生成一个字段的容器 :[()]

>>> ainfo = {‘name‘:‘lilei‘, ‘age‘:20}
>>> ainfo.keys()
[‘age‘, ‘name‘]
>>> ainfo.values()
[20, ‘lilei‘]
>>> ainfo.items()
[(‘age‘, 20), (‘name‘, ‘lilei‘)]
>>> type(ainfo.items())
<type ‘list‘>
>>> type(ainfo.items()[0])
<type ‘tuple‘>
>>> ainfo.items()[1]
(‘name‘, ‘lilei‘)

7. get 取字段的值

直接根据键取值,无法取到的时候会报错

>>> ainfo = {‘name‘:‘lilei‘, ‘age‘:20}
>>> ainfo[‘name‘]
‘lilei‘
>>> ainfo[‘names‘]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: ‘names‘

用get方法取值,如果键不存在,返回一个NoneType类型的值,可以设定返回的默认值.

>>> ainfo
{‘age‘: 20, ‘name‘: ‘lilei‘}
>>> ainfo.get(‘name‘)
‘lilei‘
>>> ainfo.get(name)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name ‘name‘ is not defined
>>> ainfo.get(‘names‘)
>>> type(ainfo.get(‘names‘))
<type ‘NoneType‘>
>>> ainfo.get(‘names‘,‘none‘)
‘none‘
时间: 2024-10-15 00:57:30

第七节课:字典的相关文章

centos mysql 优化 第七节课

centos mysql  优化  第七节课 f

Linux学习第七节课(2019.9.20)

今晚第七节课,老刘讲了文件的特殊权限SUID,SGID,SBIT,文件的隐藏设置chattr以及隐藏文件的查看lsatrr:文件访问控制列表设置setfacl以及文件访问控制的查询getfacl:切换用户命令su以及sudo命令执行权赋予用户的命令:最后讲了第六章的开头linux的目录.这周报考了,突然有点压力,哈哈,希望顺顺利利,11月1日考过红帽rhsca以及rhce.老刘网站:linuxprobe.com 原文地址:https://blog.51cto.com/14523487/24398

C#第七节课

//正文之前先吐槽(助教跳过这段啊我前面都注释了)...这学期的12周之后算了算好像还蛮闲的...12周之前...尤其是现在到12周...一顿大作业一顿大作业...还有新开的课还有期末..还有acm集训...学弟学妹要是看到博客记得...C#与Android不可兼得...少选课保平安...何苦为难自己...好了吐槽结束 上周讲了很多...感觉进度又加快了一些...我就说说课后自己又重现的老师提起过的知识吧.正好这个五一除了acm集训就在写C#的大作业,所以这节课就着重说一些实验中的问题以及实验和

7、第七节课,js逻辑运算

1.条件语句 function MyClick() { var iNum1=10; var iNum2=15; var iNum3=20; if (iNum1==iNum2) { iNum2=iNum3; } alert(iNum2); } 2. iNum3=iNum1>iNum2?iNum1:iNum2;//如果iNum1大于iNum2 则取值iNum1,或则取iNum2. 3. function MyClick() { var sInput=prompt("请输入一个1~100之间的整

2015-09-28 第七节课 (js简介、声明变量、数据类型)

vs新建步骤 文件——新建项目——web——空白web应用程序——取名.位置.确定——此时软件会自动生成一个sln文件(解决方案),一解决方案下面可以有多个项目. 点击项目——新建文件夹css和js和image——新建html页面取名demo1 (推荐设置:工具——选项——可以设置下字体和颜色:文本编辑器——把常用的几种语言设上行号颜色提示) 什么是Javascript ? Javascript 是一种脚本语言,是一种脚本语言,结构简单,使用方便,其代码可以直接放入HTML文档中,可以直接在支持

javascript第七节课

var a="a123456", b="A123456“: alert(b.toLowerCase()); 把有字母的字都转换成小写. var clock = setInterval(function(){ document.write("I am clock"); }, 1000); 多小时间加1次. setTimeout(function(){ clearInterval(clock); }, 2000); 多小时间终止(多小时间加1次)

centos mysql 实战 第七节课

mysql常见错误排查 1. client工具mysqlsqlyogmysqldump(mysqlbinlog) 2. mysql binlog 介绍 mysql 命令 mysql command not found 环境变量 echo $PATH 用绝对路径来调用/usr/local/mysql/bin/mysql ===============================================啊铭去除环境变量\cp = /bin/cp\cp 2.txt eee/# cd eee

0523 第七节课

vim编辑器 vim +# :打开文档后直接跳到#行 +/pattern:打开文档后直接跳到匹配到的文件内容的第一行 进入编辑: i   a   o    退出:esc 进入末行模式:   :     退出:esc 命令行模式--------:wq保存退出 :q未更改时退出 :w保存 :q!不保存更改直接退出     :w/PATH/TO/SOMEFILE另存为 光标跳转 字符跳转----------hjkl:左下上右 (k上j下:korea韩国在japan日本上边) #+(hjkl):向hjk

信管师培训之第七节课作业(项目沟通管理+项目合同管理)

第12章 项目沟通管理 1.项目沟通管理包括哪些过程?(记) 项目沟通管理包括如下4个过程: (1).沟通计划编制. (2).信息分发. (3).绩效报告. (4).项目干系人管理. 2.阻碍有效沟通的因素有哪些? 阻碍有效沟通的因素主要有: (1).沟通双方的物理距离. (2).沟通的环境因素. (3).缺乏清晰的沟通渠道. (4).复杂的组织结构. (5).复杂的技术术语. (6).有害的态度. 3.沟通计划编制的第一步是什么?目的是什么? 沟通计划编制的第一步是干系人分析.其目的是得出项目