第七节课:字典

Posted 慧命

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第七节课:字典相关的知识,希望对你有一定的参考价值。

字典是无序的,它不能通过偏移量来索引,只能通过键来存取.
字典= {‘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

 

以上是关于第七节课:字典的主要内容,如果未能解决你的问题,请参考以下文章

0523 第七节课

Linux学习第七节课(2019.9.20)

2018.11.23第七节课

Linux第七节课

学习笔记第七节课

shell 脚本——第七节课 三剑客之sed语句