python学习之字典
#coding:utf-8
__author__ = 'Administrator'
from copy import deepcopy
#字典由多个键及其对应的值构建的对组成,键是唯一的,值并不唯一
phonebook={'lyq':6589,'ming':9878,'tong':4586}
#1.dict函数,可以用来通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典
item=[('nn','bb'),('age',89)]
d=dict(item)
print d
dd=dict(name='gaoli',age=42)
print dd
#字典的基本操作
#1.len(d)返回d中像(键-值)对的数量
print len(dd)
#3.d[k]返回关联到k上的值
print dd['name']
#4.d[k]=v将值v关联到键k上
dd['name']='meimei'
print dd
#5.del d[k] 删除键为k的项
del dd['name']
print dd
#6. k in d 检查d中是否有含有键为K的项
if 'age' in d:
print d['age']
#字典格式化
print "lyq's phone number is %(lyq)s."%phonebook
#字典方法
#1.clear 方法清除字典中的所有的项,原地操作无返回值
d={}
d={'mali':78}
d.clear()
print d
#2.copy :返回一个具有相同键值对的新字典(这个方法实现的是浅复制,因为值本身就是相同的,而不是副本)
#副本替换值原字典不变,删除和增加原字典改变
d={'mali':78,'shasha':['foo','bar','que']}
dy=d.copy()
dy['mali']=45
dy['shasha'].remove('bar')
dy['shasha'].append('kkk')
print 'dy',dy
print 'd',d
#3.deepcopy 深复制,复制其包含的所有值
d={'mali':78,'shasha':['foo','bar','que']}
dy=deepcopy(d)
dy['mali']=45
dy['shasha'].remove('bar')
print 'dy',dy
print 'd',d
#4.fromkeys 用来给定的键建立新的字典,每个键默认对应的值为None,也可以给指定的值
li=['mali','lyq']
mm=dict.fromkeys(li)
print mm
mm=dict.fromkeys(li,'jj')
print mm
#5.get方法是个更宽松的访问字典项的方法,访问不存在的项会会得到None值(或自己设置的值)
d={'mali':78,'shasha':['foo','bar','que']}
print d['mali']
# print d['kk'] 报错
print d.get('kk')
print d.get('kk','jj')
#6.has_key方法可以检查字典中是否含有给出的键,有返回True,python 3.0没有该函数
print 'has_key',d.has_key('mali')
#7.items方法将所有的字典项以列表的方式返回,这些列表项中的每一项都来自于(键,值)
d={'mali':78,'shasha':85}
print d.items()
#iteritems 方法的作用大致相同,但是会返回一个迭代器对象而不是列表
it=d.iteritems()
print it
print list(it)
#8.keys 方法将字典中的键以列表的形式返回,而iterkeys则返回针对键的迭代器
print d.keys()
i=d.iterkeys()
print i
print list(i)
#9.pop 方法用来获得对应于给定键的值,然后将这个键-值对从字典中移除
d={'mali':78,'shasha':85}
d.pop('mali')
print d
#popitem 方法类似于list.pop,后者会弹出列表的最后一个元素,但不同的是,popitem弹出的是随机的项,因为自费的那没有“最后的元素”或其他有关书序的概念
d={'mali':78,'shasha':85}
d.popitem()
print d
#10.setdefault 方法在某种程度上类似于get方法,就是能够获得与给定键相关联的值,除此外,setdefault还能再字典中不含有给定键的情况下设定相应的键值
d={}
d.setdefault("name",'n/a')
print d
d['name']='ali'
d.setdefault('name','n/a')
print d
#当键不存在时,setdefault返回默认值并且相应的更新字典,如果键存在就返回与其对应的值,但不改变字典
#11.update 方法可以利用一个字典项更新 另外一个字典
d={'title':'python web site','url':'www.python.com','changed':'mar'}
x={'title':'python language web site'}
d.update(x)
print d
# values和itervalues 方法以列表的形式返回字典中的值(itervalues返回的是迭代器),与返回键的列表不痛的是,返回值的列表中可以包含重复元素
d={}
d[1]=1
d[2]=3
d[3]=2
d[4]=1
print d.values()