close

第4章要講dictionary ,我把它解讀成 associative array

先看個例子

name=["A","B","C"]

cash = ['100','200','300']

我們想把A 和100,B與200等等做個關聯

可以用些技巧

print cash[name.index("A")],會印出100

python 有提供更簡單的做法

book={"sea":300,"ocean":500}

這邊要注意的是,book 的內容是被{ }包住,這邊很容易

搞混,一下是[ ] ,一下又是{ } 。

要印出sea 的值

print book['sea']

要construct dictionary ,也可以這麼做

item=[('sea',300),("ocean",500)]

book = dict(item)

基本上,我們可能會需要的功能

對於(key,value)有

d[key] # 印出value

key in d # 判斷key 有沒有在d 裡,有印true , 沒印false

d[key]=value ,直接塞一個pair(key,value) 給d,如果

key 本來就有,那麼就是更新的動作,沒的話,就是插入新的pair

刪除 by del d[key] ,要小心如果key 不存在的話會產生error。

此外,要知道d 的大小可以用len(d)

我覺得以下建dictionary 的方法蠻簡單的

d={}  # 建一個空的dictionary d

d["A"] =100 # 插入新值

---------------------------------------

dictionary 裡還可以有dictioary

d={

       'book':{

               "A":"Allen",

               "B":"Bear"

      },

      'cash':{

             "m":'1000000'

             "t" : '100'

     }

}

print d['book']['A'] #印出Allen

在書上提出一個好玩的範例,就是做template

template = '''<html>  # 在''' ''' 之間都是plaintext
<head><title>%(title)s</title></head>
<body>
<h1>%(title)s</h1>
<p>%(text)s</p>
</body>'''
 data = {'title': 'My Home Page', 'text': 'Welcome to my home page!'}
 print template % data #印出以下
<html>
<head><title>My Home Page</title></head>
<body>
<h1>My Home Page</h1>
<p>Welcome to my home page!</p>
</body>

-------------------------------------

清空dictionary 使用

d.clear() ,但我想到也可以d = {} 就好了

不曉得兩者的差別。

在dictionary 中,有分成copy 以及deepcopy 。

deepcopy 是我們所理解的複製,也就

from copy import deepcopy

a = deepcopy(b)

則改a 不影響b

但a = b.copy() ,做replace 時兩者不影響,但做modify 的動作就會有。

接下來介紹 get function

它是拿value  用的

d.get("A") 和d["A"] 差不多,但d.get 比較安全,因為"A"不存在的話,d["A"]

會有error ,但d.get 會發出none (書上說none,我實際測試是沒反應),

我們也可以自訂當沒有key 時希望有什麼output 出現

d.get("A","not exist"),如果A沒有在d ,裡就會印出not exist

還有d.haskey("A"),有的話回傳true ,沒回傳false

功能和 "A" in d ,一樣

這章就差不多這樣。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 lettice0913 的頭像
    lettice0913

    斑的家

    lettice0913 發表在 痞客邦 留言(0) 人氣()