字典

字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。
列表中我们通过“下标数字”找到对应的对象。字典中通过“键对象”找到对应的“值对象”。“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是:列表、字典、集合这些可变对象,不能作为“键”。并且“键”不可重复。
“值”可以是任意的数据,并且可重复。
一个典型的字典的定义方式:
a={name:“gaoqi,age:18,job:"programmer}

创建字典

1.{}、dict()

 a = {'name':'wang','age':22}

b = dict(name = 'wang',age = 22)

c = dict([('name','age'),('wang',22)])

2.通过zipO创建字典对象
>>>k=['name',age','job]
>>>v=['gaoqi,18,'techer]
>>>d=dict(zip(k,v))
>>>d
(name':'gaoqi,'age':18,'job':'techer}
3.通过fromkeys创建值为空的字典
>>>a=dict.fromkeys(['name',age',job])
>>>a%
{name':None,'age:None,'job:None}

字典元素访问

为了测试各种访问方法,我们这里设定一个字典对象:
a={name':“gaoqi",age:18,job:"programmer}
1.通过[键]获得“值”。若键不存在,则抛出异常。
>>>a=fname':“gaoqi",age:18,job':"programmer}
>>>a[name]
‘gaoqi'
>>>afage]
18
>>>a['sex]
Traceback(most recent call last):File"<pyshell#374>",line 1,in <module>
a[rsex]
KeyError:'sex'

 

2.通过get)方法获得“值”。推荐使用。优点是:指定键不存在,返回None;也可以设定指定键不存在时默认返回的对象。推荐使用get0获取“值对象”。
>>>a.get('name)
‘gaoqi'
>>>a.get('sex)
>>>a.get('sex,'一个男人)

 

3.列出所有的键值对
>>>a.items0
dict items([Cname,'gaoqi),Cage',18),(job',programmer)1)

 

4.列出所有的键,列出所有的值
>>>a.keys0
dict keys(['name','age',job])
>>>a.values0
dict values(rgaoqi,18,'programmer1)
5.len0键值对的个数
6.检测一个“键”是否在字典中
>>>a={"name":"gaoqi","age:18}
>>>"name"in a True

 

字典元素添加、修改、删除


1.给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对"。
>>>a='name'“gaoqi",/age:18,job"programmer}
>>>a['address]='西三旗1号院”
>>>afage]=16
>>>a
{name':'gaoqi,age:16,job:'programmer,'address:西三旗1号院}
2.使用update0将新字典中所有键值对全部添加到旧字典对象上。如果key有重复,则直接覆盖。

>>>a=fhame:gaoql,age:l-job:programmer}
>>>b={name:“gaoxixi,money':1000,'sex:“男的}
>>>a.update(b)
>>>a name:'gaoxixit,'age:18,job:'programmer,'money:1000,'sex:男的

3.字典中元素的删除,可以使用del0方法;或者clear0删除所有键值对;popO删除指定键值对,并返回对应的“值对象";
>>>a=fname'“gaoqi",age:18,job':"programmer}
>>>del(a['name'])
>>>a
{age:18,job:‘programmer}
>>>b=a.pop(age)
>>>b
184.popitem):随机删除和返回该键值对。字典是“无序可变序列”,因此没有第一个元素、最后一个元素的概念;popitem弹出随机的项,因为字典并没有“最后的元素“或者其他有关顺序的概念。若想一个接一个地移除并处理项,这个方法就非常有效(因为不用首先获取键的列表)。|I
>>>a={name:“gaoqi",/age:18,job':“programmer}
>>>a.popitem0
(job','programmer)
>>>a
《name:gaoqi',‘age:18)
>>>a.popitem0
Cage',18)
>>>a
{name:'gaoqi)

 

序列解包
序列解包可以用于元组、列表、字典。序列解包可以让我们方便的对多个变量赋值。
>>>x,y,z=(20,30,10)
>>>x
20
I
>>>y
30
>>>z
10
>>>(a,b,c)=(9,8,10)
>>>a
9
>>>[a,b,c]=[10,20,30]
>>>a
10
>>>b
20

 

序列解包用于字典时,默认是对“键”进行操作;如果需要对键值对操作,则需要使用items0;如果需要对“值”进行操作,则需要使用 values0;
>>>s={name:'gaoqi",'age:18,job:"teacher}
>>>name.age,job=s#默认对键进行操作
>>>name
‘name'
>>>name,age.job=s.items0#对键值对进行操作
>>>name Cname,'gaoqi)
>>>name,age.job=s.values0#对值进行操作
>>>name‘gaoqi'

posted @ 2019-06-27 15:50  一兀  阅读(221)  评论(0)    收藏  举报