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

Python映射之字典

2016-04-06 20:02 771 查看
序列是按编号对元素进行引用;另一种数据结构用名字来引用值——映射(mapping)。字典是Python中唯一内建的映射类型。字典中的值没有特定的顺序,但是有特定的键(Key)。键可以是数字、字符串甚至是元组。

定义

字典中的键-值对(key:value)作为一项以逗号隔开,放在大括号内。

创建字典、使用字典

1.直接创建

>>> phonebook = {'Ami':'1211','Bli':'2322','Cro':'3211'}
>>> phonebook['Ami']
'1211'
>>>

2.dict函数建立字典

dict函数(和list、tuple和str一样,是一种类型)可以通过其他映射或者(键:值)对的序列建立字典。
>>> items = [('name','Tom'),('age','41')]
>>> d = dict(items)
>>> d
{'age': '41', 'name': 'Tom'}
>>> d['name']
'Tom'
dict函数还可以用关键字参数创建字典。
>>> d = dict(name='Tom',age='42')
>>> d
{'age': '42', 'name': 'Tom'}
dict函数也可以以映射为参数,建立一个项与映射相同的字典;若参数为空,则建立空字典。

3.基本字典操作

字典的基本行为在很多方面和序列(sequence)类似。
>>> d['age']        #通过键来访问值         序列是用索引访问值
'42'
>>> d['age'] = 40   #通过键来赋值           序列用索引
>>>
>>> del d['name']   #通过del删除键-值对
>>>
>>> 'age' in d      #用in查询成员资格       字典用键,序列用值
True
>>>

>>> d               #自动添加:在用不存在的键赋值时,字典会自动将该键添加到字典中,并进行赋值
{'age': 40}
>>> d['name'] = 'Tom'
>>> d
{'age': 40, 'name': 'Tom'}
>>>
键类型:键可以是任意不可变类型。

4.字典的格式化字符串

>>> info = {'name':'Ami','sex':'girl'}
>>> '%(name)s is a %(sex)s' % info
'Ami is a girl'
>>>
此时,字典是只以字符串作为键的。

5.字典方法

(1).clear

>>> d                                  #清空字典
{'age': 40, 'name': 'Tom'}
>>> d.clear()
>>> d
{}
>>>

(2).copy

>>> x = {'name':'admin','password':'888'}    #返回一个有相同键-值对的字典(这个方法实现的是浅复制(shallow copy),即x,y两个引用指向同一个对象)
>>> x
{'password': '888', 'name': 'admin'}
>>> y = x.copy()
>>> y
{'password': '888', 'name': 'admin'}
>>>
若要实现深复制(deep copy),可以用copy模块的deepcopy函数完成。

(3).fromkeys

>>> {}.fromkeys(['name','age'])           #用给定键创建字典,并可指定初始化值
{'age': None, 'name': None}
>>>
>>> dict.fromkeys(['name','age'])
{'age': None, 'name': None}
>>>
>>> dict.fromkeys(['name','age'],'unknown')
{'age': 'unknown', 'name': 'unknown'}
>>>

(4).get

>>> d = {'name':'Tom'}                    #通过键值访问值,若不存在该键,以自定义值返回信息
>>> d
{'name': 'Tom'}
>>> d.get('name')
'Tom'
>>> d.get('age')
>>> d.get('age','N/A')
'N/A'

(5).has_key

>>> d = {}                               #和in操作符功能相同
>>> d.has_key('name')
False
>>> d['name'] = 'Tom'
>>> d.has_key('name')
True
>>>

(6).items和iteritems

>>> d = {'title':'Python Web Site','url':'http://www.python.org'}     #items将字典所有项以列表方式返回,列表中的每一项都表示为(键,值)对的形式
>>> d.items()
[('url', 'http://www.python.org'), ('title', 'Python Web Site')]
>>>
>>> it = d.iteritems()                                                #iteritems返回一个迭代器对象
>>> it
<dictionary-itemiterator object at 0x0000000003327778>
>>> list(it)
[('url', 'http://www.python.org'), ('title', 'Python Web Site')]

(7)keys和iterkeys

keys方法将字典中的键以列表形式返回,而iterkeys则返回键的迭代器。

(8).pop

>>> d = {'x':1,'y':2}           #pop方法用来获得对应于给定键的值,然后将这个键-值对从字典中移除
>>> d
{'y': 2, 'x': 1}
>>> d.pop('x')
1
>>> d
{'y': 2}
>>>

(9).popitem

>>> d = {'title':'Python Web Site','url':'http://www.python.org'}    #返回随机的项,并移除该项
>>> d
{'url': 'http://www.python.org', 'title': 'Python Web Site'}
>>> d.popitem()
('url', 'http://www.python.org')
>>> d
{'title': 'Python Web Site'}
>>>

(10).setdefault

>>> d                           #获取指定键的值;若该键不存在,添加该键并以所给参数为该键赋值,若不指定参数,赋值None
{}
>>> d.setdefault('name','N/A')
'N/A'
>>> d
{'name': 'N/A'}
>>> d['age'] = 40
>>> d.setdefault('age',0)
40
>>> d.setdefault('num')
>>> d
{'age': 40, 'num': None, 'name': 'N/A'}
>>>

(11).update

>>> d = {                                   #update利用一个字典更新字典,提高的字典中的项会被添加到旧字典中,若有相同的键则会进行覆盖
'title':'Python Web Site',
'url':'http://www.python.org',
}
>>> d
{'url': 'http://www.python.org', 'title': 'Python Web Site'}
>>> x = {'title':'Python Language Website'}
>>> d.update(x)
>>> d
{'url': 'http://www.python.org', 'title': 'Python Language Website'}
>>>

(12).values和itervalues

values方法以列表的形式返回字典中的值,itervalues返回值的迭代器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程 python