python学习笔记(4) 字典

来源:互联网 发布:sql中in怎么优化 编辑:程序博客网 时间:2024/06/15 04:53

本篇主要记录学习使用字典的笔记。

列表、元组和字符串等均是通过编号进行引用,而对于通过名字引用值的数据结构,则为映射,字典是Python里唯一内建的映射类型。

字典中的值并没有特殊的顺序,都存储在一个特定的键(Key)里,键可以是数字、字符串甚至是元组。

1 创建字典
(1)直接创建

>>> phonebook={'faith':'1852','Alice':'2341'}

每个键和它的值之间用冒号隔开,项之间用逗号隔开,整个字典由一对大括号括起来,空字典为{}

(2) dict函数

>>> items=[('name','Gumby'),('age',42)]>>> items[('name', 'Gumby'), ('age', 42)]>>> d=dict(items)>>> d{'age': 42, 'name': 'Gumby'}>>> 

也可以通过关键字参数来创建字典:

>>> d=dict(name='gg',age=42)>>> d{'age': 42, 'name': 'gg'}>>> 

2 字典的基本操作

>>> d=dict(name='gg',age=42)>>> d{'age': 42, 'name': 'gg'}>>> len(d)2>>> d['age']42>>> d['age']='55'>>> d{'age': '55', 'name': 'gg'}>>> 'age' in dTrue>>> '55' in dFalse>>> del d['age']>>> d{'name': 'gg'}>>> 

3 字典的格式化字符串

%字符后面加上用圆括号括起来的键,后面再跟上其他说明元素:

>>> 'the year is %(year)s' % d'the year is 2015'>>> 

4 字典方法
(1) clear
清除字典中所有的项:

>>> d=dict(name='gg',age=42)>>> d{'age': 42, 'name': 'gg'}>>> y=d>>> y{'age': 42, 'name': 'gg'}>>> y.clear()>>> y{}>>> d{}>>> 

注:对于字典的关联 y=d ,当删除其中一个时,另一个同时也被清除了。

(2)copy
copy方法返回一个具有相同键值对的新字典,是浅复制,当在副本中替换值时,原始字典不受影响,但是如果修改了某个值,原始字典会发生变化:

>>> x={'name':'admin','machines':['foo','bar','zoo']}>>> y=x.copy()>>> y['name']='mlh'>>> y['machines'].remove('bar')>>> y{'name': 'mlh', 'machines': ['foo', 'zoo']}>>> x{'name': 'admin', 'machines': ['foo', 'zoo']}>>> 

深复制: deepcopy

>>> from copy import deepcopy>>> d={}>>> d['name']=['alice','faith']>>> c=d.copy()>>> dc=deepcopy(d)>>> c{'name': ['alice', 'faith']}>>> dc{'name': ['alice', 'faith']}>>> d['name'].append('MOOM')>>> d{'name': ['alice', 'faith', 'MOOM']}>>> c{'name': ['alice', 'faith', 'MOOM']}>>> dc{'name': ['alice', 'faith']}>>> 

(3) fromkeys
使用给定键建立新的字典,每个键默认对应的值为None,当然也可以自定义默认值:

>>> {}.fromkeys(['name','age']){'age': None, 'name': None}>>> {}.fromkeys(['name','age'],'Unknown'){'age': 'Unknown', 'name': 'Unknown'}>>> 

(4)get
如果键存在,跟普通的字典查询功能一样,如果键不存在,仍能访问,得到的是None或者是自定义的N/A:

>>> d['name']='Eric'>>> d{'name': 'Eric'}>>> d.get('name')'Eric'>>> d.get('age')>>> d.get('age','N/A')'N/A'>>> 

(5) items和iteritems
items方法将所有的字典项以列表的方式返回:

>>> d={'title':'Python','url':'http://www.python.org','spam':0}>>> d{'url': 'http://www.python.org', 'spam': 0, 'title': 'Python'}>>> d.items()[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python')]>>> 

iteritems作用相同,但是返回的是一个迭代器:

>>> it=d.iteritems()>>> it<dictionary-itemiterator object at 0x0134D3C0>>>> list(it)[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python')]>>> 

多数情况下使用iteritems更高效。

(6)keys和iterkeys
将字典中的键以列表形式返回:

>>> d.keys()['url', 'spam', 'title']>>> d.iterkeys()<dictionary-keyiterator object at 0x0134D360>>>> list(d.iterkeys())['url', 'spam', 'title']>>> 

(7) pop
获得对应于给定键的值,并将这个键值对从字典中移除:

>>> d{'url': 'http://www.python.org', 'spam': 0, 'title': 'Python'}>>> d.pop('spam')0>>> d{'url': 'http://www.python.org', 'title': 'Python'}>>> 

(8)popitem
随机删除某一键值对项:

>>> d{'url': 'http://www.python.org', 'title': 'Python'}>>> d.popitem()('url', 'http://www.python.org')>>> d{'title': 'Python'}>>> 

(9)update
利用一个字典项去更新另一个字典,如果有相同的键则会进行覆盖,否则添加:

>>> d{'title': 'Python'}>>> x={'title':'java'}>>> d.update(x)>>> d{'title': 'java'}>>>> x={'url':'www.python.org'}>>> d.update(x)>>> d{'url': 'www.python.org', 'title': 'java'}>>> 

(10)values和itervalues
以列表的形式返回字典中的值(itervalues返回值的迭代器):

>>> d{'age2': 10, 'age1': 10}>>> d.values()[10, 10]>>> 
0 0
原创粉丝点击