字典(KV)資料庫
在日常生活中,有時會常常需要處理一些事物的對應關係,舉一個最常見的例子,電話簿,就是聯絡人與手機號碼的對應關係,這種問題就很是合用python中的字典(dictionary
)功能來解決。
這個在程式語言中也被稱作**KV資料庫,**是一種很常見的資料庫形式,像是C++中有個很相似的叫做map
,由key(鍵)與value(值)組成,其中key是不能修改的,如同電話簿中的名字一樣,正常情況(改名例外,而且也不常見)下不會修改。
不過裏面的值是可以被修改的,就像電話簿中的手機號碼,常常會因爲某些原因會被更動。
對這個資料庫有興趣的讀者可以參考下面這個維基百科的連結。
https://zh.wikipedia.org/zh-tw/键-值存储
宣告
有兩種方式
法一 與正常變數一樣的方式宣告
phonebook = {"John Doe": "123-456-7890", "Jane Doe": "987-654-3210"}
其中格式如下
{"鍵1” :"值1" , "鍵2” :"值2" ... "鍵n” :"值n" }
法二 用dict函數
這個函數接受了數種引數格式,第n個鍵或值分別用Kn與Vn來表示。
- 1.傳入一個有數個元組(格式:
(鍵,值)
) 的清單,格式如下 。
dict=([(K1,V1),(K2,V2),........,(Kn,Vn)}}
- 2.用平常宣告變數的方式來當作引數的格式,只是變數名稱是鍵,變數數值是值。
口訣:名稱不能變是鍵,值是值。
dict(K1=V1,K2=V2 .....Kn=Vn)
存取
對單個元素
與清單的格式相同,只是索引值改成鍵值,清單填入數字,但字典可是填入資料,範例如下。
# 電話簿字典例子
phone_book = {
"Alice": "123-456-7890",
"Bob": "234-567-8901",
"Charlie": "345-678-9012",
"David": "456-789-0123",
"Eva": "567-890-1234"
}
print(phone_book["Bob"])
執行結果
'234-567-8901'
對多個元素的迴圈技巧
用item函數
item
函數是用來回傳指定元素字典的鍵值對的,用法如下,以下迴圈會遍歷 phone_book
中的所有元素,並以 item
函數回傳給 k
v
。
phone_book = {
"Alice": "123-456-7890",
"Bob": "234-567-8901",
"Charlie": "345-678-9012",
"David": "456-789-0123",
"Eva": "567-890-1234"
}
for k, v in phone_book.items():
print(k, v)
執行結果(即爲遍歷所有字典序列的鍵值對,並列印出來)
Alice 123-456-7890
Bob 234-567-8901
Charlie 345-678-9012
David 456-789-0123
Eva 567-890-1234