字典:
- 字典是一種組合數據,沒有順序的組合數據,數據以鍵值對形式出現spa
# 字典的建立 # 建立空字典1 d = {} # 建立空字典2 d = dict() # 建立有值的字典,每一組數據用冒號隔開,每一對鍵值對用逗號隔開 d = {"one":1, "two":2, "three":3} # 用dict建立有內容字典1 d = dict({"one":1, "two":2, "three":3}) # 用關鍵字參數建立有內容字典2 d = dict(one=1, two=2, three=3) # 用tuple建立有內容字典3 d = dict( [("one",1), ("two",2), ("three",3)])
- 字典是序列類型,可是是無序序列,因此沒有分片和索引
- 字典中的數據每一個都有鍵值對組成,即kv對
- key: 必須是可哈希的值,好比int,string,float,tuple 可是list,set,dict 不行
- value: 任何值code
# 訪問數據 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
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
d = {"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}
# 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,能夠設置,找到則輸出沒找到則返回100 print(d.get("one", 100)) print(d.get("one333", 100)) #print(d['on333'])程序會直接報錯 #None #1 #100
# fromkeys: 使用指定的序列做爲鍵,使用一個值做爲字典的全部的鍵的值 l = ["eins", "zwei", "drei"] # 注意fromkeys兩個參數的類型和調用主體 d = dict.fromkeys(l, "hahahahahah") print(d) #{'eins': 'hahahahahah', 'zwei': 'hahahahahah', 'drei': 'hahahahahah'}