2009年3月4日 星期三

Python 資料型態(下)

4. Dictionaries -> Dictionaries擁有鍵與值的對照, 類似Java中的Map類

>>> demo = {'a':123, 'b':456, 'c':789} # 使用“:“分隔鍵與值
>>> demo['a']
123

當然也可以不必在一開始就做指定動作, 能夠在不同位置指定內容讓Dictionaries擁有了極大的彈性

>>> demo = {}  #  指定一個空殼給demo
>>> demo['a'] = 123
>>> demo['b'] = 456
>>> demo
{'a' : 123, 'b' : 456}

巢狀內容的呼叫

>>> demo = {'name':{'first':'Bob', 'last':'Smith'},
      'job':['dev', 'mgr'],
      'age':40.5}
>>> demo['name']['first']
'Bob'

依照鍵值排序顯示內容:事實上我們可以發現Dictionaries顯示出的內容並不會從左到右排序, 所以有以下方法可供參考

>>> D = {'a':1, 'c':2, 'b':3}
>>> Ks = D.keys()
>>> Ks
['a', 'c', 'b']
>>> Ks.sort()
>>> Ks
['a', 'b', 'c']
>>> for key in Ks:
   print key, '=>', D[key]
a => 1
b => 2
c => 3

上面的方法是先取出鍵值陣列排序在依序取出值, 但還有一種更簡單的方式就是使用內置的sorted()方法

>>> for key in sorted(D):
    print key,'=>',D(key)
a => 1
b => 2
c => 3

5. tuples -> tuples 是python中一個特別的元件, 你可能不曾在別的語言中碰過, 它類似List但卻無法更動順序, 也無法在宣告之後指定參照

>>> T = (1, 2, 3, 4)
>>> len(T)
4
>>> T + (5, 6)
(1, 2, 3, 4, 5, 6)
>>> T[0]
1
>>> T[0] = 2   # 如果想指定參照會出現Exception

Traceback (most recent call last):
 File "<pyshell#4>", line 1,in <module>
   T[0]=2
TypeError:'tuple' object does not support item assignment

事實上tuples並不像List那麼常被用在練習中...但是tuples的好處就是在於"不可更動性"

6. Files -> 檔案操作物件通常一般不會包含在核心物件之內, 古怪的是你無法使用敘述式建立它們, 唯一的方法只有呼叫open()函式

寫入資料

>>> f = open('data.txt', 'w')    #開啟data.txt, 'w'為寫入write模式
>>> f.write('Hello\n')       # 寫入字串
>>> f.write('world\n')
>>> f.close()      # 關閉檔案flush剛剛寫入的資料

讀取資料

>>> f = open('data.txt')  # 也可以在型態上加上'r'
>>> data = f.read()  # 讀取函式read(), 但其實也可以使用 for text in f 來讀
>>> data
'Hello\nworld\n'
>>> print data
Hello
world

其他還有一堆類似Files物件的工具, 譬如pipes, fifos, sockets, keyed-access files, object persistence, descriptor-based files, relational and object-oriented database interfaces等, 以後陸續有學習到再做介紹。

沒有留言:

張貼留言