第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 ,一樣
這章就差不多這樣。
留言列表