PHP前端开发

详解python中字典的几个方法

百变鹏仔 3小时前 #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 访问字典项

&gt;&gt;&gt; d={}&gt;&gt;&gt; print d['name']Traceback (most recent call last):  File "<pyshell>", line 1, in <module>    print d['name']KeyError: 'name'&gt;&gt;&gt; print d.get('name')None&gt;&gt;&gt; d.get('name','N/A')'N/A'&gt;&gt;&gt; d['name']='Eric'&gt;&gt;&gt; d.get('name')'Eric'</module></pyshell>

has_key 检查字典中是否有给出的键(python3.0没有这个函数)

&gt;&gt;&gt; d={}&gt;&gt;&gt; d.has_key('name')False&gt;&gt;&gt; d['name']='Eric'&gt;&gt;&gt; d.has_key('name')True

items和iteritems 

items将所有的字典项以列表方式返回,这些列表项中的每一项都来自于(键,值)

iteritems返回一个迭代器对象

&gt;&gt;&gt; d={'title':'My Time!','url':'http://www,python.org','spam':0}&gt;&gt;&gt; d.items()[('url', 'http://www,python.org'), ('spam', 0), ('title', 'My Time!')]&gt;&gt;&gt; s=d.iteritems()&gt;&gt;&gt; s<dictionary-itemiterator>&gt;&gt;&gt; list(s)[('url', 'http://www,python.org'), ('spam', 0), ('title', 'My Time!')]</dictionary-itemiterator>

keys和iterkeys keys将字典中的键以列表形式返回 iterkeys返回针对键的迭代器

pop 移除

&gt;&gt;&gt; d={'x':1,'y':2}&gt;&gt;&gt; d.pop('x')&gt;&gt;&gt; d{'y': 2}

 popitem 移除随机的项

&gt;&gt;&gt; d={'x':1,'y':2}&gt;&gt;&gt; d.popitem()('y', 2)&gt;&gt;&gt; d{'x': 1}

setdefault 当键不存在时,返回默认值并更新相应字典

&gt;&gt;&gt; d={}&gt;&gt;&gt; d.setdefault('name','N/A')'N/A'&gt;&gt;&gt; d{'name': 'N/A'}&gt;&gt;&gt; d['name']='Gumby'&gt;&gt;&gt; d.setdefault('name','N/A')'Gumby'&gt;&gt;&gt; d{'name': 'Gumby'}

update 利用一个字典项更新另外一个字典

&gt;&gt;&gt; d={'x':1,'y':2,'z':3}&gt;&gt;&gt; f={'y':5}&gt;&gt;&gt; d.update(f)&gt;&gt;&gt; d{'y': 5, 'x': 1, 'z': 3}

values和itervalues  alues返回字典中的值(itervalues返回值的迭代器)

&gt;&gt;&gt; d={}&gt;&gt;&gt; d[1]=1&gt;&gt;&gt; d[2]=2&gt;&gt;&gt; d[3]=3&gt;&gt;&gt; d.values()[1, 2, 3]