seansie's blog

字典(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

reference