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上的值
  • 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#60>", 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'

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 object at 0x0000000003068728>
>>> list(s)
[('url', 'http://www,python.org'), ('spam', 0), ('title', 'My Time!')]

keys和iterkeys keys將字典中的鍵以列表形式返回 iterkeys返回針對鍵的迭代器

pop 移除

>>> d={'x':1,'y':2}
>>> d.pop('x')
1
>>> 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]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM