Python 3.1 快速導覽 - 內建字典型態 (dict)

內建的字典型態 (dictionary type) 只有一種,由 key:value 配對的複合資料型態 (compound data type)

型態描述
dict由 key:value 配對的複合資料型態


建立字典變數可利用大括弧,裡頭以 key:value 為配對的資料項目,每一筆資料再以逗號區隔開,例如
d1 = {1:"a", 2:"b"}


上述字典型態的變數 d1 有兩筆資料,第一筆資料的 key 為 1 , value 為 "a" ,第二筆資料的 key 為 2 , value 為 "b" 。使用字典須注意, key 必須是不可變的 (immutable) 資料型態,如數字、字串 (string) 等, value 沒有限制,因此有需要的話,使用串列 (list) 或字典皆可。


也可以利用字典型態的建構子 (constructor) 建立物件,如下
d2 = dict(1="a", 2="b")
d3 = dict({1:"a", 2:"b"})
d4 = dict(zip((1, 2), ("a", "a")))
d5 = dict([[2, "b"], [1, "a"]])


以上 d2 、 d3 、 d4 、 d5 所得到的字典物件,全都會與 d1 相同。


字典物件可進行以下的運算
計算描述
d[key]從 d 中取得 key 的 value
d[key] = value將 d 的 key 指定為 value
del d[key]刪除 d 中 key 所指定的 value
key in d判斷 key 是否在 d 中
key not in d判斷 key 是否不在 d 中
iter(d)回傳由 d 的 key 建立的迭代器
len(d)回傳 d 的配對資料個數


字典物件有以下的方法 (method)
方法描述
dict.clear()清空 dict 的所有配對資料
dict.copy()回傳 dict 的拷貝
classmethod dict.fromkeys(seq[, value])由 seq 中的元素構成 key ,每個 key 都給相同的 value 值
dict.get(key[, default])從 dict 中取得 key 的 value ,若無此 key 則回傳 default , default 預設為 None
dict.items()回傳 dict_items 物件,使 key:value 儲存為序對,然後依序儲存在 dict_items 物件中
dict.keys()回傳 dict_items 物件,使 key 依序儲存在 dict_items 物件中
dict.pop(key[, default])將 key 的 value 從 dict 移除,若無此 kay ,回傳 default
dict.popitem()從 dict 移除任意一組 key:value
dict.setdefault(key[, default])如果 key 在 dict 中,回傳 value 值,反之,將 key:default 加入 dict 之中
dict.update([other])將 dict 以 other 更新
dict.values()回傳 dict_items 物件,使 value 依序儲存在 dict_items 物件中


舉例示範如下
d = {1:"a", 2:"b", 3:"c"}
print(d)
print(type(d))
print()

print(d[2])
d[4] = "d"
print(d)
del d[2]
print(d)
print(3 in d)
print(3 not in d)
for i in iter(d):
    print(i, end=" ")
print()
print(len(d))
print()

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:dicttype.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月


執行結果如下



中英文術語對照
字典型態dictionary type
複合資料型態compound data type
不可變的immutable
字串string
串列list
建構子constructor
方法method


內建型態




1 則留言:

Hutdris 提到...

請問
d4 = dict(zip((1, 2), ("a", "a")))
若要和d1相同,是否該改成
d4 = dict(zip((1, 2), ("a", "b")))