dict字典
- 字典是一種組合資料,沒有順序的組合資料,資料以鍵值對形式出現
# 字典的建立 # 建立空字典1 d = {} print(d) # 建立空字典2 d = dict() print(d) # 建立有值的字典, 每一組資料用冒號隔開, 每一對鍵值對用逗號隔開 d = {"one":1, "two":2, "three":3} print(d) # 用dict建立有內容字典1 d = dict({"one":1, "two":2, "three":3}) print(d) # 用dict建立有內容字典2 # 利用關鍵字引數 d = dict(one=1, two=2, three=3) print(d) # d = dict( [("one",1), ("two",2), ("three",3)]) print(d)
{} {} {`one`: 1, `two`: 2, `three`: 3} {`one`: 1, `two`: 2, `three`: 3} {`one`: 1, `two`: 2, `three`: 3} {`one`: 1, `two`: 2, `three`: 3}
字典的特徵¶
- 字典是序列型別,但是是無序序列,所以沒有分片和索引
- 字典中的資料每個都有鍵值對組成,即kv對
- key: 必須是可雜湊的值,比如int,string,float,tuple, 但是,list,set,dict 不行
- value: 任何值
字典常見操作
# 訪問資料 d = {"one":1, "two":2, "three":3} # 注意訪問格式 # 中括號內是鍵值 print(d["one"]) d["one"] = "eins" print(d) # 刪除某個操作 # 使用del操作 del d["one"] print(d)
1 {`one`: `eins`, `two`: 2, `three`: 3} {`two`: 2, `three`: 3}
# 成員檢測, in, not in # 成員檢測檢測的是key內容,鍵 d = {"one":1, "two":2, "three":3} if 2 in d: print("value") if "two" in d: print("key") if ("two",2) in d: print("kv")
key
可以看出,字典dict中的成員檢測為鍵,因為它具有唯一性
# 便利在python2 和 3 中區別比較大,程式碼不通用 # 按key來使用for迴圈 d = {"one":1, "two":2, "three":3} # 使用for迴圈,直接按key值訪問 for k in d: print(k, d[k]) # 上述程式碼可以改寫成如下 提倡這麼寫 for k in d.keys(): print(k, d[k]) # 只訪問字典的值 for v in d.values(): print(v) # 注意以下特殊用法 for k,v in d.items(): print(k,`--`,v)
one 1 two 2 three 3 one 1 two 2 three 3 1 2 3 one -- 1 two -- 2 three -- 3
# 常規字典生成式 dd = {k:v for k,v in d.items()} print(dd) # 加限制條件的字典生成式 過濾檔案 dd = {k:v for k,v in d.items() if v % 2 == 0} print(dd)
{`one`: 1, `two`: 2, `three`: 3} {`two`: 2}
字典相關函式
# 通用函式: len, max, min, dict # str(字典): 返回字典的字串格式 d = {"one":1, "two":2, "three":3} print(d)
{`one`: 1, `two`: 2, `three`: 3}
# clear: 清空字典 # items: 返回字典的鍵值對組成的元組格式 d = {"one":1, "two":2, "three":3} i = d.items() print(type(i)) print(i)
<class `dict_items`> dict_items([(`one`, 1), (`two`, 2), (`three`, 3)])
# keys:返回字典的鍵組成的一個結構 k = d.keys() print(type(k)) print(k)
<class `dict_keys`> dict_keys([`one`, `two`, `three`])
# values: 同理,一個可迭代的結構 v = d.values() print(type(v)) print(v)
<class `dict_values`> dict_values([1, 2, 3])
# get: 根據制定鍵返回相應的值, 好處是,可以設定預設值 d = {"one":1, "two":2, "three":3} print(d.get("on333")) # get預設值是None,可以設定 print(d.get("one", 100)) print(d.get("one333", 100)) #體會以下程式碼跟上面程式碼的區別 print(d[`on333`])
{`eins`: `hahahahahah`, `zwei`: `hahahahahah`, `drei`: `hahahahahah`}