为什么需要字典
In [1]: list1 = ['name','age','class']
In [2]: list2 = ['haha',14,'linux']
In [3]: zip(list1,list2)
Out[3]: [('name', 'haha'), ('age', 14), ('class', 'linux')]
zip函数可以将两个列表结合
字典就如中文字典,起到索引并快速找到想要的信息的作用,在python中,字典是python中唯一的映射类型,key-value对应类型,字典对象是可变的,但key必须用不可变对象,字典可以有效减少任务的繁琐
字典的定义
简单字典的创建
##字典的定义一般以{key:value}模式
In [4]: dic = {'name':'cici','age':14}
In [5]: type(dic)
Out[5]: dict
##字典的key索引,由于key是不可变对象,所以不可以用0,1.. 来索引,要用字符来索引
In [6]: dic['name']
Out[6]: 'cici'
In [7]: dic[0]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-7-c3244007d783> in <module>()
----> 1 dic[0]
KeyError: 0
##由于value值是可变的,所以可以用位置参数来索引
In [8]: dic['name'][0]
Out[8]: 'c'
内建方法:fromkeys
字典中的key有相同的value值,默认为None
In [56]: dic.fromkeys([1,3,5,7])
Out[56]: {1: None, 3: None, 5: None, 7: None}
In [57]: dic.fromkeys([1,3,5,7],'hello')
Out[57]: {1: 'hello', 3: 'hello', 5: 'hello', 7: 'hello'}
字典的访问
#直接通过key访问
In [4]: dic = {'lixu':'123','mingm':'qwe3','kikio':'ada'}
In [6]: dic['mingm']
Out[6]: 'qwe3'
字典值的访问
循环遍历访问
In [1]: dic = {'name':'cici','age':4,'feel':'happy'}
In [2]: for key in dic:
...: print dic[key]
...:
happy
4
cici
字典的添加
dic[key] = value
由于字典是无序的,所以不能按照位置参数添加
In [4]: dic
Out[4]: {'age': 4, 'feel': 'happy', 'name': 'cici'}
In [5]: dic['gift']='doll'
In [6]: dic
Out[6]: {'age': 4, 'feel': 'happy', 'gift': 'doll', 'name': 'cici'}
字典的操作
In [11]: dic
Out[11]: {'age': 4, 'feel': 'happy', 'gift': 'doll', 'name': 'cici'}
In [12]: dic.
dic.clear dic.has_key dic.itervalues dic.setdefault dic.viewkeys
dic.copy dic.items dic.keys dic.update dic.viewvalues
dic.fromkeys dic.iteritems dic.pop dic.values
dic.get dic.iterkeys dic.popitem dic.viewitems
常用方法
dic.get():如果key存在于字典中,返回对应value值
dic.keys():返回字典的所有key值
dic.has_keys():字典中是否存在某个key值
In [23]: dic = {'name':'cici','age':4,'feel':'happy'}
In [24]: dic.get('name')
Out[24]: 'cici'
In [25]: dic.keys()
Out[25]: ['feel', 'age', 'name']
In [26]: dic.has_key(ss)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-26-43113b712ec1> in <module>()
----> 1 dic.has_key(ss)
NameError: name 'ss' is not defined
In [27]: dic.has_key('name')
Out[27]: True
删除
dic.pop(key)
根据key值删除字典的元素;
In [13]: dic
Out[13]: {'age': 4, 'feel': 'happy', 'gift': 'doll', 'name': 'cici'}
In [14]: dic.pop('gift')
Out[14]: 'doll'
In [15]: dic
Out[15]: {'age': 4, 'feel': 'happy', 'name': 'cici'}
dic.popitem()
随机删除字典元素,返回(key,value)
In [15]: dic
Out[15]: {'age': 4, 'feel': 'happy', 'name': 'cici'}
In [16]: dic.popitem()
Out[16]: ('feel', 'happy')
In [17]: dic.popitem()
Out[17]: ('age', 4)
In [18]: dic
Out[18]: {'name': 'cici'}
dic.clear()
删除字典中的所有元素
In [18]: dic
Out[18]: {'name': 'cici'}
In [19]: dic.clear()
In [20]: dic
Out[20]: {}
del dic
删除字典本身
In [20]: dic
Out[20]: {}
In [21]: del(dic)
In [22]: dic
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-22-1b445b6ea935> in <module>()
----> 1 dic
NameError: name 'dic' is not defined