2009年12月25日 星期五

Python Dictionary資料型態的方法

Dictionary資料型態的建立

Dictionary相對於Perl的Hash資料型態,不像list或tuple型態必需用 integer當作index,dictionary是使用名稱來做index。

在Python中宣告dictionary資料型態的方法很簡單。由下面的但子可以看到,dictionary資料型態用 { }包覆,其中,每一個index和value pair用逗號區隔開來;而index和value之間則用 冒號 區隔

>>> x = {'one':1,'two':2}

>>> x
   {'one': 1, 'two': 2}

除此之外,也可以使用dict()這個function來定義,用法如下。dict()這個function的參數可以是其它的dictionary或sequence(如list或tuple)

>>> x = dict([('one',1),('two',2)])

>>> x
   {'one': 1, 'two': 2}

下面為另一種寫法,注意此寫法與上一個例子的差異! 在這個寫法中,one和two等keyword不需用引號括起來;而上面的寫法中,one和two這兩個keyword就必需用引號括起來

>>> x=dict(one=1,two=2)

>>> x
   {'one': 1, 'two': 2}

Dictonary資料型態的方法

與sequence資料型態一樣,dictionary也有下列幾種基本的方法

  • len(dic):回傳dic這個dictionary有多少的key-value pair
  • dic(k):回傳k這個key所指向的value
  • del dic(k):刪除以k做為key的這組
  • k in dic:檢視dic中,有沒有k這個key

除了上述方法之外,dictionary還有下列專屬的方法

clear:

clear可以把dictionary中的東西清空。如

>>> dic
   {'two': 4, 'one': 2}

>>> dic.clear()

>>> dic
   {}

copy:

Copy可以複製dictionary的內容。如

>>> dic
  {'two': 2, 'one': 1}

>>> dic2 = dic.copy()

>>> dic2
  {'two': 2, 'one': 1}

get:

get這個方法可以用key來找尋相對的value,與 dic['key']這個取值方式的差別在於,當key值不存在於dic這個dictionary時,dic['key']這種取值方式會回傳exception。

>>> dic['key']

Traceback (most recent call last):
   File "<pyshell#104>", line 1, in <module>
    dic['key']
   KeyError: 'key'

若用get這個方法取值,當key值不存在時,不會出現exception

>>> dic.get('key')


   >>>

若要定義key值不存在時,要回傳何預設值,可用

>>> dic.get('key','N/A')
  'N/A'

items:

這個方法可以將dictionary中的所有元素以 list的方式回傳,回傳的元素並不會遵照固定的順序

>>> dic.items()
   [('two', 2), ('one', 1)]

iteritems:

和items一樣,也是回傳dictionary中的元素。不同的地方在於,它是以一個 iterator 物件的方式回傳。接著可以在迴圈中,用此物件將元素一一列出

>>> it = dic.iteritems()

>>> it
   <dictionary-itemiterator object at 0x00DC0500>
   >>> list(it)
   [('two', 2), ('one', 1)]

keys及 iterkeys:

keys會回傳dictionary的所有key值;iterkeys則是回傳一個iterator物件,可由該物件取得key值

popitem:

將dictionary中的元素移出,類似於list的pop功能。不過因為dictionary沒有順序觀念,所以移出的順序不固定

>>> dic
  {'three': 3, 'two': 2, 'one': 1}
   >>> dic.popitem()
  ('three', 3)
  >>> dic
  {'two': 2, 'one': 1}

values及itervalues:

與keys及iterkeys功能相似,不過它回傳的是dictionary的value