说到python的字典,我第一个想到的是与之类似的JSON,也同样是键值对。
前面第一讲有那么一个隐患的问题,我们说八进制数都是以0开头的,但是有的时候,我们要表示以0开头的十进制数,怎么办?最常见的办法是直接把它表示成字符串,就解决了这个问题。
前面我们还讲到了[ ],( ),一个表示序列,一个表示元组,今天引入一个新的符号{ },表示字典,字典是由多个键以及它所对应的值组成的键值对,类似于这样:
>>> {'name':'kate','age':20,'country':'England'}#注意字典中的键是唯一确定的
1,创建和使用字典:
这里要说的一个重要的函数:dict()
#可以通过映射对建立字典
>>> items = [('name','kate'),('age',19)]
>>> d = dict(items)
>>> d
{'name':'kate','age':19}
>>> d['name']
'kate'
#还可以直接赋值来创建字典
>>> d = dict(name = 'kate',age = 19)
>>> d
{'name':'kate','age':19}
2,基本的字典操作:
>>> items = [('name','kate'),('age',19)]
>>> len(items) #返回字典的长度
>>> del items['name']
>>> 'age' in items #返回布尔值,判断键是否在字典中,注意不是值,是键
3, 字典的格式化字符串:
>>> object = {'name':'kate','age':19}
>>> print 'her age is %(age)s, and her name is %(name)s' %object #%+键+s(通常字符串+s,整数+d,浮点数+f),后面接字典的名称
'her age is 19,her name is kate'
4,关于字典的一些方法:
# clear()用来清空字典的,具体用法请看下面例子:
>>> x = {}
>>> x['name'] = 'kate'
>>> y = x
>>> y
{'name':'kate'}
>>> x.clear()
>>> y
{} #这里要说明的是clear方法会影响给赋值的元素,如果不用clear方法,比如直接x = {},就不会影响到y
copy( )&&deepcopy( )
#copy()方法,浅复制,当你替换某个值时,另一个字典不受影响,删除或者增加某个值时,就开始影响了
>>> x = {'name':'kate','place':[123,234]}
>>> y = x.copy()
>>> y['name'] = 'kathy'
>>> x
{'name':'kate','place':[123,234]}
>>> y['place'].append('456')
>>> x
{'name':'kate','place':[123,234,456]}
#deepcopy(),深层复制,不会影响原始字典
>>> from copy import deepcopy
>>> x = {'name':'kate','place':[123,234]}
>>> y = x.deepcopy()
>>> y['place'].append('456')
>>> x
{'name':'kate','place':[123,234]} #并没有影响到x
fromkeys( ),建立新的字典,构造空字典
>>> dict.fromkeys(['name','age'])
{'age',None,'name':None}
get( )访问字典项:
>>> d = {'name':'king'}
>>> d.get('name')
'king'
>>> d.get('age')
None
pop( ) 移除键值,popitem( )弹出随机项,都是返回弹出的值
>>> d = {'name':'king'}
>>> d.pop('name')
>>> d
{}
>>> dota = {'name':'king','age':19}
>>> dota.popitem()
{'age':19}
#update()修改字典
>>> dota = {'name':'king','age':19}
>>> x = {'name':'kate'}
>>> dota.update(x)
>>> dota
{'name':'kate','age':19}
本章到此结束,请继续学习下一章 Python入门5_条件循环语句