python 字典方法

1.clear  

清除字典中所有的項。原地操作,無返回值(或說返回值爲None)。


>>> d = {}

>>> d['name'] = 'Gumby'

>>> d['age'] = 42

>>> d

{'age':42, 'name': 'Gumby'}

>>> returned_value = d.clear()

>>> d

{}

>>> print returned_value

None

#此方法會清除原始字典內容


2.copy

返回具有相同key-value的新字典,爲淺複製(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)

>>> from copy import deepcopy

>>> d = {}

>>> d['names'] = ['Alfred', 'Bertrand']

>>> c = d.copy()

>>> e = deepcopy(d)

>>> d['names'].append('Clive')

>>> c

{'names': ['Alfred', 'Bertrand', 'Clive']}

>>> e

{'names': ['Alfred', 'Bertrand']} #深複製沒有因爲原字典的改變而改變

3.fromkeys

使用給定的key建立新字典,每個key默認對應的值爲None。

>>> d_a = {} 
>>> d_a.fromkeys(['name', 'age']) 
{'age': None, 'name': None}

#可自定義None值爲其他

>>> d_a.fromkeys(['name', 'age'],'(unknown)') 
{'age': '(unknown)', 'name': '(unknown)'}


4.get

寬鬆訪問字典的key值,訪問的key不存在時,返回None,可自定義None.

>>> d = {} 
>>> print d.get('name') 
None 
>>> print d.get('name','N/A') 
N/A 
>>>

5.has_key

檢查字典中是否有給出的key,表達式d.has_key(k)等價於k in d。(3.0中不包括這個方法)

>>> d = {} 
>>> d.has_key('name') 
False 
>>> d['name'] = 'Eric' 
>>> d.has_key('name') 
True

6.items和iteritems
items方法將所有的字典項以列表的方式返回,列表中的項由(key,value)組成,返回項無特殊順序。
>>> d= {'title': 'Python Web Site', '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 at 0x020699F0> 
>>> list(it) #Convert the iterator to a list 
[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')]


7.keys和iterkeys
keys方法將字典中的key以列表形式返回,而iterkeys則返回針對鍵的迭代器。
>>> d.keys() 
['url', 'spam', 'title']
>>> d.iterkeys() 
<dictionary-keyiterator object at 0x02075570> 
>>> list(d.iterkeys()) 
['url', 'spam', 'title']


8.pop
用來獲得對應於給定key的value,然後將這個key-value從字典中移除。
>>> d = {'x': 1, 'y': 2}
>>> d.pop('x') 

>>> d 
{'y': 2}

9.popitem
類似於list.pop,list.pop會彈出列表最後一個元素。popitem彈出隨機項,因爲字典中無順序概念。(不用獲取key就可以移除項。)
>>> d 
{'url': 'http://www.python.org', 'spam': 0, 'title': 'Python Web Site'} 
>>> d.popitem() 
('url', 'http://www.python.org')
#字典是無序的,所以沒有append方法。

10.setdefault
類似get方法,能夠獲得給定key的value,此外setdefault還能在自動重不含有給定key的情況下設定相應的key-value。
>>> d = {} 
>>> d.setdefault('name', 'N/A') 
'N/A' 
>>> d 
{'name': 'N/A'} 
>>> d['name'] = 'Gumby' 
>>> d.setdefault('name', 'N/A') 
'Gumby' 
>>> d 
{'name': 'Gumby'}
#當key-value不存在時,setdefault返回默認值並相應地更新字典。如果key存在,那麼就返回與其對應的value,但不改變字典。默認值可選,默認返回None。

11.update
利用一個字典項更新另外一個字典:
>>> d= { 
'title': 'Python Web Site', 
'url': 'http://www.python.org', 
'changed': 'Mar 14 22:09:15 MET 2008' 

>>> x = {'title': 'Python Language Website'} 
>>> d.update(x) 
>>> d 
{'url': 'http://www.python.org', 'changed': 'Mar 14 22:09:15 MET 2008', 'title': 'Python Language Website'}

12.values和itervalues
values方法以列表的形式返回字典中的值(itervalues返回值的迭代器)。與返回值的列表不同的是,返回值的列表中可以包含重複的元素:
>>> d = {} 
>>> d[1] = 1 
>>> d[2] = 2 
>>> d[3] = 3 
>>> d[4] = 1 
>>> d.values() 
[1, 2, 3, 1]
>>> d.itervalues() 
<dictionary-valueiterator object at 0x02075660>
>>> list(d.itervalues()) 
[1, 2, 3, 1]

發佈了41 篇原創文章 · 獲贊 50 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章