字典是python语言中唯一的映射类型。
映射类型对象里哈希值(key,键)和指向的对象(value,值)是一对多的关系,通常被认为是可变的哈希表。
字典的对象是可变的,它是一个容器类型,能存储任意个数的python对象,其中也可包括其他容器类型。
字典中的数据是无序排列的。
字典中键与值用“:”分开、项与项之间用“,”分开、字典中值必须是唯一的,而值可以不唯一!
1.创建dict
简单的说字典就是用大括号“{}”括起来的键值对的集合。
一般形式:
>>> adict={‘name‘:‘fly‘,‘age‘:30,‘sex‘:‘man‘}
>>> bdict={}
>>> type(bdict)
<type ‘dict‘>
>>> type(adict)
<type ‘dict‘>>>>
使用dict()函数:
>>> cdict = dict()
>>> type(cdict)
<type ‘dict‘>
>>> cdict
{}
>>> ddict = dict(([‘a‘,1],[‘b‘,2]))
>>> ddict
{‘a‘: 1, ‘b‘: 2}
>>> edict = dict(name=‘flyer‘,sex=‘man‘)
>>> edict
{‘name‘: ‘flyer‘, ‘sex‘: ‘man‘}
>>>
2、dict的增删改查
>>> adict = {‘age‘: 30, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}
增
adict[new_key] = value
>>> adict[‘telphone‘]= 1888888888
>>> adict
{‘age‘: 30, ‘telphone‘: 1888888888, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}
删
- del adict[key] #删除指定key的项
- del adict #删除整个字典
- adict.pop(key) #删除指定key的项
- adict.clear() #清空字典所有条目
>>> del adict[‘age‘]
>>> adict
{‘telphone‘: 1888888888, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}
>>> adict
{‘telphone‘: 1888888888, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}
>>> adict.pop(‘telphone‘)
1888888888
>>> del adict #删除整个字典
如果删除的元素不存在
>>> adict = {‘age‘: 30, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}
>>> del adict[‘wife‘]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: ‘wife‘
>>> adict.pop(‘wife‘)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: ‘wife‘
>>>
改
adict[old_key] = new_value
>>> adict
{‘age‘: 30, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}
>>> adict[‘name‘]=‘fhr‘
>>> adict
{‘age‘: 30, ‘name‘: ‘fhr‘, ‘sex‘: ‘man‘}
>>>
查
- adict.has_key(‘key‘) #有->True、无->False
- in 、not in #如:‘key‘ in adict 有->True、无->False
- adict.get(‘key‘) #获得key的值,有则返回key的value,没有不显示
- adict[‘key‘] #获得key的值,有则返回key的value,没有则报一个异常
>>> adict
{‘age‘: 30, ‘name‘: ‘fhr‘, ‘sex‘: ‘man‘}
>>> adict.has_key(‘name‘)
True
>>> adict.has_key(‘wife‘)
False
>>> ‘name‘ in adict
True
>>> ‘wife‘ in adict
False
>>>
>>> adict.get(‘age‘)
30
>>> adict.get(‘wife‘)
>>> print adict.get(‘wife‘)
None
>>> adict[‘age‘]
30
>>> adict[‘wife‘]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: ‘wife‘>>>
3.映射类型操作符
标准类型操作符:+,-,*,/,<,>,<=,>=,==,!=,and,or,not
字典不支持拼接和重复操作符(+,*)
字典的比较
先比较字典的长度也就是字典元素个数,在比较键,然后比较值
>>> adict = {‘age‘: 30, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘,‘telphone‘:188888888}
>>> bdict = {‘age‘: 30, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}
>>> cdict = {‘age‘: 24, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}
>>> ddict = {‘age‘: 30, ‘name‘: ‘fly‘}
>>> edict = {‘age‘: 30, ‘name‘: ‘fly‘}
>>> cmp(adict,bdict)
1
>>> cmp(bdict,cdict)
1
>>> cmp(ddict,cdict)
-1
>>> cmp(ddict,edict)
0
>>>
4.字典的特性
字典的value可以是任何的python对象,key不行
1).字典中的键是唯一的,如果同一个key被赋值两次,后一个value会被记住
>>> dict = {‘name‘:‘fj‘,‘name‘:‘fhr‘}
>>> dict
{‘name‘: ‘fhr‘}
>>>
2).键必须是不可变的,可以用数,字符串或者元祖充当,但是列表不行。
>>> dict = {[‘name‘]:‘fjg‘,‘age‘:18}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: ‘list‘
5.字典的内置函数&方法
- adict.clear() : 删除字典内所有元素
>>> adict = {‘age‘: 30, ‘name‘: ‘fhr‘, ‘sex‘: ‘man‘}
>>> adict.clear()
>>> adict
{}
- adict.copy() : 返回一个字典浅拷贝的副本
- adict.fromkyes(S[,v]) : 创建并返回一个新字典,以S中的元素作为新字典的key,v做新字典中所有key的初始value。v默认为None
- adict.get(key[,d]) :获得字典中key的value。如果key不存在,则返回d,d的默认值为None
- adict.has_key(key):查询字典中是否有key,有则返回True,否则返回False
- adict.items():返回一个包含所有(键,值)元组的列表
- adict.interitems() :通过key:value迭代
- adict.interkeys():通过key迭代
- adict.intervalues():通过value迭代
- adict.keys():返回一个包含字典所有key的列表
- adict.pop(k[,d]):如果存在key,删除并返回k对应的value,如果key不存在,且指定了d的值,则返回d,如果没有指定d,则引发keyerror异常。
- adict.popitem():随机删除任意一个元素并返回,如果adict是空的,则返回异常
- adict.setdefault(key,default=‘ ‘):如果key存在则返回key的值,如果key不存在,则由adict[key]=default为key赋值
- adict.update()
- adict.values():返回一个包含字典所有value的列表
- adict.viewitems()
- adict.viewkeys()
- adict.viewvalues()