详解python中字典的几个方法
创建字典
>>> phonebook={'Alice':'2897','Alan':'0987','Jery':'6754'}
dict函数
>>> items=[('name','Gumby'),('age',42)]>>> d=dict(items)>>> d{'age': 42, 'name': 'Gumby'}>>> d['name']'Gumby'>>> d=dict(name='July',age=24)>>> d{'age': 24, 'name': 'July'}
基本的字典操作(大部分与序列类似)
len(d)返回d中项(键-值对)的数量
d[k]返回关联到键k上的值
立即学习“Python免费学习笔记(深入)”;
d[k]=v将值v关联到k上
del d[k]删除键为k的项
k in d检查d中是否有含有键为k的项
格式化字符串
>>> phonebook{'Jery': '6754', 'Alice': '2897', 'Alan': '0987'}>>> "Alan's phone number is %(Alan)s." % phonebook"Alan's phone number is 0987."
方法:
clear 清除字典中所有的项
>>> d={}>>> d['name']='Gumby'>>> d['age']=42>>> d{'age': 42, 'name': 'Gumby'}>>> d.clear()>>> d{}>>> x={}>>> y=x #x和y对应同一个字典>>> x['key']='value'>>> y{'key': 'value'}>>> x={} #x关联到新的空字典>>> y{'key': 'value'}>>> x={}>>> y=x>>> x['key']='value'>>> y{'key': 'value'}>>> x.clear()>>> y{}
copy 返回一个具有相同键-值对的新字典(浅复制)
>>> x={'name':'admin','machines':['foo','bar','bax']}>>> y=x.copy()>>> y['name']='yhk' #替换值,原字典不受影响>>> y['machines'].remove('bar') #修改了某个值(原地修改不是替换),原字典会改变>>> y{'name': 'yhk', 'machines': ['foo', 'bax']}>>> x{'name': 'admin', 'machines': ['foo', 'bax']}
deepcopy 深复制
>>> from copy import deepcopy>>> d={}>>> d['name']=['Aly','Bob']>>> c=d.copy()>>> e=deepcopy(d)>>> d['name'].append('Ageal')>>> c{'name': ['Aly', 'Bob', 'Ageal']}>>> e{'name': ['Aly', 'Bob']}
fromkeys 使用给定的键建立新的字典,每个键默认的对应的值为none
>>> {}.fromkeys(['name','age']){'age': None, 'name': None}>>> dict.fromkeys(['name','age']){'age': None, 'name': None}>>> dict.fromkeys(['name','age'],'(unknown)'){'age': '(unknown)', 'name': '(unknown)'}
get 访问字典项
>>> d={}>>> print d['name']Traceback (most recent call last): File "<pyshell>", line 1, in <module> print d['name']KeyError: 'name'>>> print d.get('name')None>>> d.get('name','N/A')'N/A'>>> d['name']='Eric'>>> d.get('name')'Eric'</module></pyshell>
has_key 检查字典中是否有给出的键(python3.0没有这个函数)
>>> d={}>>> d.has_key('name')False>>> d['name']='Eric'>>> d.has_key('name')True
items和iteritems
items将所有的字典项以列表方式返回,这些列表项中的每一项都来自于(键,值)
iteritems返回一个迭代器对象
>>> d={'title':'My Time!','url':'http://www,python.org','spam':0}>>> d.items()[('url', 'http://www,python.org'), ('spam', 0), ('title', 'My Time!')]>>> s=d.iteritems()>>> s<dictionary-itemiterator>>>> list(s)[('url', 'http://www,python.org'), ('spam', 0), ('title', 'My Time!')]</dictionary-itemiterator>
keys和iterkeys keys将字典中的键以列表形式返回 iterkeys返回针对键的迭代器
pop 移除
>>> d={'x':1,'y':2}>>> d.pop('x')>>> d{'y': 2}
popitem 移除随机的项
>>> d={'x':1,'y':2}>>> d.popitem()('y', 2)>>> d{'x': 1}
setdefault 当键不存在时,返回默认值并更新相应字典
>>> d={}>>> d.setdefault('name','N/A')'N/A'>>> d{'name': 'N/A'}>>> d['name']='Gumby'>>> d.setdefault('name','N/A')'Gumby'>>> d{'name': 'Gumby'}
update 利用一个字典项更新另外一个字典
>>> d={'x':1,'y':2,'z':3}>>> f={'y':5}>>> d.update(f)>>> d{'y': 5, 'x': 1, 'z': 3}
values和itervalues alues返回字典中的值(itervalues返回值的迭代器)
>>> d={}>>> d[1]=1>>> d[2]=2>>> d[3]=3>>> d.values()[1, 2, 3]