Python中字典dict
阿新 • • 發佈:2018-11-22
last 序列 比較 索引 結構 刪除 basic 檢測 local
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‘])
None 1 100
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-74-7a2a24f5a7b6> in <module>() 9 10 #體會以下代碼跟上面代碼的區別 ---> 11 print(d[‘on333‘]) KeyError: ‘on333‘
# fromkeys: 使用指定的序列作為鍵,使用一個值作為字典的所有的鍵的值 l = ["eins", "zwei", "drei"] # 註意fromkeys兩個參數的類型 # 註意fromkeys的調用主體 d = dict.fromkeys(l, "hahahahahah") print(d)
{‘eins‘: ‘hahahahahah‘, ‘zwei‘: ‘hahahahahah‘, ‘drei‘: ‘hahahahahah‘}
Python中字典dict