python学习手册:字典,方法
字典方法:
1.clear:清空字典中所有的项,无返回值,是将整个字典都清空了
>>> d={}
>>> d['name']='Alice'
>>> d['age']=21
>>> d
{'age': 21, 'name': 'Alice'}
>>> returned_value=d.clear()
>>> d
{}
>>> print returned_value
None
下面看一下clear方法的功效,用两个例子来说明一下
示例一:没有使用clear的时候,将字典赋空
>>> x={}
>>> y=x
>>> x['key']='value'
>>> y
{'key': 'value'}
>>> x={}
>>> y
{'key': 'value'}
当将x赋空时,y并没有也相同的赋空了
示例二:当使用clear方法时
>>> x={}
>>> y
{'key': 'value'}
>>> x={}
>>> y=x
>>> x['key']='value'
>>> x.clear()
>>> y
{}
以上两个示例中,虽然都是指向同一个字典,在示例一中,将x关联到一个新的字典来清空是,对y没有影响,但用clear方法时,清空了原始字典中所有的元素,那么y也被清空了
2.copy方法:返回一个具有相同键—值对的新字典,这个方法的是浅复制(shallow copy)
>>>x={'username':'admin','machines':['foo','bar','baz']}
>>> y=x.copy()
>>> y['username']='mlh'
>>> y['machines'].remove('bar')
>>> y
{'username': 'mlh', 'machines': ['foo','baz']}
>>> x
{'username': 'admin', 'machines': ['foo','baz']}
>>>
在上例中,在副本中替换值的时候,原字典不受影响,但是,如果如果原地修改某个值,那原始的字典也会修改,因为同样的值也存储在原字典中
避免这个问题的一种方法就是使用深复制(deep copy),复制其包含的所有的值,可以使用copy模块的deepcopy函数来完成操作:
>>> d={}
>>>d['name']=['Alfred','Bertrand']
>>> c=d.copy()
>>> dc=deepcopy(d)
>>> d['name'].append('Clive')
>>> c
{'name': ['Alfred', 'Bertrand', 'Clive']}
>>> dc
{'name': ['Alfred', 'Bertrand']}
3.fromkeys:使用给定的键建立新的字典,每个键默认对应的值为none
>>> {}.fromkeys(['name','age'])
{'age': None, 'name': None}
首先创建了一个空字典,然后调用它的fromkeys方法,建立一个新的字典,有点空余,现在直接在所有字典的类型dict上调用方法
>>> dict.fromkeys(['name','age'])
{'age': None, 'name': None}
如果不使用none作为默认值,也可以自己提供默认值
>>>dict.fromkeys(['name','age'],'(unknown)')
{'age': '(unknown)', 'name': '(unknown)'}
4.get方法:get是个更宽松的访问字典项的方法,一般来说,如果试图访问字典中不存在的项时会出错:
d={}
>>> print d['name']
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
print d['name']
KeyError: 'name'
但是使用get方法就不会出错
>>> print d.get('name')
None
若键存在,get用起来就像普通的字典查询一样
>>> d['name']='Eric'
>>> d.get('name')
'Eric'
字典方法示例
#使用get()的简单数据库
people={'xiaoming':{'phone':'123','addr':'beijing'},
'laowang':{'phone':'234','addr':'sahnghai'},
'Jeson':{'phone':'345','addr':'shenzheng'}}
#这里添加代码清淡4-1中插入数据库的代码
labels={'phone':'phonenumber','addr':'address'}
name=raw_input('Name:')
#查找电话号码还是地址?
request=raw_input('phone number (p) oraddress (a)?')
#使用正确的键:
key=request #如果请求既不是‘p’也不是‘a’
if request=='p':key='phone'
if request=='a':key='addr'
#使用get()提供默认值:
person=people.get(name,{})
label=labels.get(key,key)
result=person.get(key,'not aviable')
print "%s's %s is %s." %(name,label,result)
5.has_key:此方法可以检查字典中是否含有给出的键,表达式d.has_key(k)相当于表达式k in d,也就是True与False来表示
>>> d={}
>>> d.has_key('name')
False
>>> d['name']='Eric'
>>> d.has_key('name')
True
6.items和iteritems:items方法将所有的字典项一列表方式返回,这些列表项中的每一项都来自于(键,值),但是项在返回时并没有特殊的顺序
d={'title':'python website','url':'http://www.python.org','spam':0}
d.items()
[('url', 'http://www.python.org'), ('spam',0), ('title', 'python web site')]
Iteritems方法的作用大致相同,但是会返回一个迭代器对象而不是列表:
it=d.iteritems()
>>> it
<dictionary-itemiterator object at0x02A38420>
很多情况下使用iteritems更高效
7.keys与iterkeys,keys是将字典中的键以列表的形式返回,二iterkeys则返回针对键的迭代器
8.pop方法:用来获得对应于给点键的值,然后将这个键-值对从字典中移除
>>> d={'x':1,'y':2}
>>> d.pop('x')
1
>>> d
{'y': 2}
9.popitem方法:类似于list,pop,后者会弹出列表的最后一个元素,但不同的是popitem弹出的是随机的项,若想一个一个的移除,这个方法就好了,因为不用首选获取键的列表
虽然popitem方法和列表的pop方法很类似,但是字典中没有与append等价的方法,因为字典是无序的,
10.setdefault:类似于get方法,就是能够获得与给定键相关的值,同时,setdefault还能在字典中不含有给定键的情况下设定相应的键值
11.update方法:可以利用一个字典更新另一个字典,就是在一个字典的后面加上另一个字典
>> d={'title':'python website','url':'http://www.python.org','changed':'Oct 27 16:33 MET 2008'}
>>> x={'title':'python languagewebsite'}
>>> d.update(x)
>>> d
{'url': 'http://www.python.org', 'changed':'Oct 27 16:33 MET 2008', 'title': 'python language website'}
Uodate方法可以与dict函数(或者类型构造函数)同样的方式进行调用
12.values和itervalues
Values方法一列表的形式返回字典中的值,与返回键的列表不同的是,返回值的列表中可以包含重复的元素:
阅读更多>>> d={}
>>> d[1]=1
>>> d[2]=2
>>> d[3]=3
>>> d[4]=1
>>> d.values()
[1, 2, 3, 1]
- 《Python 学习手册4th》 第八章 列表与字典
- python学习——采用sorted方法对字典的键、值进行排序
- 字典的fromkeys()方法 分类: python基础学习 2013-06-15 16:31 305人阅读 评论(0) 收藏
- python学习九:SocektServer学习、bisect、list的sort详解、清空字典的两种方法、zip初探
- python学习手册笔记--第8章--列表与字典
- python学习四:import模块方法、可变参数、字典key判断、版本信息获取、列表解析、
- 【Python 学习手册笔记】列表与字典
- Python学习实践----比较字典中是否有相同键值的方法之一
- 【Python学习】python学习手册--第八章 列表与字典
- Python基础语法学习--元祖和字典以及相关操作和方法
- Python学习入门基础教程(learning Python)--8.3 字典常用的方法函数介绍
- 笨方法学习Python-习题40: 字典, 可爱的字典
- Python学习笔记九:列表(1)--列表元素介绍及创建方法
- python学习笔记——Thread常用方法
- Python字典按值排序、包含字典的列表按字典值排序的方法
- 遍历python字典的几种方法
- python 字典 clear方法
- python中sys模块各个类变量和方法(译文)(随学习加深而更新)
- python学习手册笔记--第14.20章--迭代器和解析
- Dive Into Python 学习记录1-函数/模块导入/字典/列表/元组/字符串分割、连接、格式化/映射list/