天天看點

五、字典的功能

---恢複内容開始---

字典是由每一組鍵值對組成  每個鍵值對都是關系型資料,查詢速度很快  通過二分法查找

dic = {'key':'value','name':'yy','hobby':'heheh','list':[2,3,'ee'],2:True

....}

資料類型的另一種分類方式

可變資料類型(不可哈希類):list,dict,set

不可變資料類型(可哈希類):str  int   bool  tuple 

容器類型 (承載各種資料類型)                             : list  dic  tuple 

字典的的增、删、改、查

字典的鍵是唯一的,一個字典不可能存在兩個相同的鍵

字典的順序:3.5之前都是無序的  3.6 之後有序的(建立字典的時候按照一定的順序插入,看起來有序的)  

字典的增、删、改。查

1.哈希表  每個字典都有一個哈希表 通過哈希表來定位每個鍵值對  友善查找 

dic = {'key':'value','name':'yy','hobby':'heheh','list':[2,3,'ee'],2:True}
print(hash('key'))
print(hash('value'))      

#-2335181179344269333

#5043510051693866644

每個每個鍵值對都有hash數 這個hash數值 是不斷變化的

字典的增加

第一種:有則覆寫,無則添加  添加的位置是無序的 列印順序也是無序的 每次列印順序都不一緻

dic = {'key':'value','name':'yy','hobby':'heheh','list':[2,3,'ee'],2:True}
dic['姓名'] = '張三'
dic['key'] = 'hehe'
print(dic)
#{'list': [2, 3, 'ee'], 2: True, 'name': 'yy', '姓名': ['張三'], 'key': 'value', 'hobby': 'heheh'}
#{'list': [2, 3, 'ee'], 'key': 'hehe', 2: True, 'name': 'yy', 'hobby': 'heheh'}

      

第二種 setdefault   有則不變 無則添加

dic = {'key':'value','name':'yy','hobby':'heheh'}
dic.set.default('key','大炮')
dic.set.default('sex','femal')
print(dic)      
# dic = {'key':'value','name':'yy','hobby':'heheh'}
# dic = {'key':'value','name':'yy','sex':'femal',hobby':'heheh'}  也是無序的增加進去
第三種  update
dic1.update(dic2)
将dic2中的鍵值對加入到dic1中,如果dic2中的鍵和dic1中的重複,則用dic2中的值覆寫dic1中的值 反之亦然
字典的删除
      
dic = {'key':'value','name':'yy','hobby':'heheh'}
第一種: pop 有傳回值
print(dic.pop('key')  隻能删除鍵   列印的結果會是這個鍵對應的值  如果删除值 會報錯
# value 
print(dic.pop('sex',None)  如果你要删除的鍵在這個字典中不存在,這種會傳回你設定的值None  如果不設定的話 會報錯
#  None  
第二種: clear
直接清空整個字典 留下空的字典
dic.clear()
print(dic)
#{}
第三種:del 
      
dic = {'key':'value','name':'yy','hobby':'heheh'}      
del dic
print(dic)
報錯
del dic['key']          隻能通過鍵來删除值   如果删除的是值 會報錯      
print(dic)
#{'name':'yy','hobby':'heheh'}        
第四種:popitem         這是個逗比功能 随機删除字典中的鍵值對 但是可以傳回
 print(dic.popitem())      
 字典的查
      
dic = {'key':'value','name':'yy','hobby':'heheh'}      
第一種:通過鍵來查值  
print(dic['key']}       

#  value 

第二種:get  通過鍵來查找值

print(dic.get('key')

#value

print(dic.get('sex','你要查找的沒有'))   如果要查找的鍵 不存在則預設傳回None  如果自己定義了參數 則傳回你定義的

#你要查找的沒有   

其他方法   C

dic.values()    把字典的鍵值對中的值 單獨拉出來組成一個資料類型為dic_values的([])

print(dic.values())   dict_values(['heheh', 'value', 'yy'])

dic.keys()          把字典的鍵值對中的鍵 單獨拉出來組成一個資料類型為dic_key的([])

print(dic.keys())    dict_keys(['name', 'hobby', 'key'])

dic.items()        把字典的鍵值拉出來組成一個資料類型為dic_items的([])

print(dic.items())  dict_items([('key', 'value'), ('name', 'yy'), ('hobby', 'heheh')])

  以上三種方法得出來的資料類型隻能循環  但是可以轉換為清單的資料類型

分别指派  這個很有意思

a,b = 2,3 

print(a,b)

#a = 3 

 b = 2  一行代碼把a b 的值互換

(a,b)= (2,3)

print(a,b)   # 2,3

dic = {'key':'value','name':'yy','hobby':'heheh'}
for x,y in dic.items():
    print(x,y)
      

#hobby heheh

name yy

key value

---恢複内容結束---

繼續閱讀