您的位置:首页 > 编程语言 > Python开发

python数据类型——字典

2015-08-25 14:42 633 查看

引入

没有字典的时候我们可能会这么做:

>>> t = ['name', 'age', 'sex']
>>> v = ['chen', 24, 'male']
>>> zip(t,v)
[('name', 'chen'), ('age', 24), ('sex', 'male')]
>>> v = ['chen', 24]
>>> zip(t,v)
[('name', 'chen'), ('age', 24)]


也可能会使用列表来存储数据,但是这样不够直观,因为访问的时候都是用下标来进行访问。由此,就产生了字典{}这种数据结构

字典是python种唯一的映射类型(哈希表)

字典的对象是可变的,但是字典的键必须使用不可变的对象,并且一个字典中可以使用不同类型的键值。

keys() 或者values()返回键列表或者值列表。

items()返回包含键值对的元组





创建字典

方法一:{}

>>> dic = {0:0,1:1,2:2}
>>> dic[0]
0
>>> dic[2]
2
>>> dic = {0:'00',1:'11',2:'22'}
>>> dic[0]
'00'
>>> dic = {0:'123',name:'chenwen','x':456}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'name' is not defined
>>> name = None
>>> dic = {0:'123',name:'chenwen','x':456}
>>> name
>>> dic
{0: '123', 'x': 456, None: 'chenwen'}


注意

上面代码中的,出错信息,意思是,name还没定义,所以之后将name定义之后,才可以顺利创建字典。创建之后,其实是以name的值做键。

并不是创建字典的时候直接定义name的值。

>>> a = 1
>>> b = 2
>>> dic = {a:'aaa','b':'bbb'}
>>> a
1
>>> b
2
>>> dic
{1: 'aaa', 'b': 'bbb'}


方法二: 使用工厂方法dict()

>>> dict(one=1, two=2)
{'two': 2, 'one': 1}
>>> dict({'one': 1, 'two': 2})
{'two': 2, 'one': 1}
>>> dict(zip(('one', 'two'), (1, 2)))
{'two': 2, 'one': 1}
>>> dict([['two', 2], ['one', 1]])
{'two': 2, 'one': 1}


方法三: 内建方法:fromkeys()

字典中的元素具有相同的值,默认为None

>>> {}.fromkeys(('x','y'))
{'y': None, 'x': None}
>>> {}.fromkeys(('x','y'),-1)
{'y': -1, 'x': -1}


访问字典中的值

>>> dic = {0:'123',name:'chenwen','x':456}
>>> for k in dic:
...     print k
...
0
x
None
>>> for k in dic:
...     print dic[k]
...
123
456
chenwen


更新和删除

>>> dic = {0:'123',name:'chenwen','x':456}
>>> dic['like'] = "DOTA"
>>> dic
{0: '123', 'x': 456, 'like': 'DOTA', None: 'chenwen'}
>>> dic['like'] = "GIRL"
>>> dic
{0: '123', 'x': 456, 'like': 'GIRL', None: 'chenwen'}
>>> del(dic[None])
>>> dic
{0: '123', 'x': 456, 'like': 'GIRL'}
>>> dic.pop(0)
'123'
>>> dic
{'x': 456, 'like': 'GIRL'}
>>> dic.clear()
>>> dic
{}
>>> dic = {0:'123',name:'chenwen','x':456}
>>> del(dic)
>>> dic
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'dic' is not defined
>>> #注意:clear 和del 是不同的,clear只是清空,但是del则是
... #将整个变量删除,相当于没定义
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: