目錄: 1.字典基本概念 2.字典鍵(key)的特性 3.字典的建立 4-7.字典的增刪改查 8.遍歷字典html
(key:value; key:value; .......)
分開,這些鍵-值對是使用逗號分隔的,整個字典項目用大括號括起來。</br>python
字典值能夠沒有限制地取任何python對象,既能夠是標準的對象,也能夠是用戶定義的,但鍵不行。編程
兩個重要的點須要記住:數組
dict1 = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}; print ("dict1['Name']: ", dict1['Name'])
輸出結果:dict1['Name']: Manni
數據結構
dict1 = {['Name']: 'Zara', 'Age': 7}; print ("dict1['Name']: ", dict1['Name'])
輸出結果:dict1 = {['Name']: 'Zara', 'Age': 7}; TypeError: unhashable type: 'list'
unhashable,不可哈希, 若是咱們簡單點理解,某數據「不可哈希」(unhashable)就是其可變,如list/dict,都能原地修改,就是unhashable。可改變的數據結構 :字典dict,列表list,集合set. 字典也被稱做關聯數組或哈希表.函數
</br>spa
字典由鍵(key)和對應值(value)成對組成。字典也被稱做關聯數組或哈希表。基本語法以下:.net
dict1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} #建立字典dict1
使用字典來存儲用戶提供的數據或在編寫能自動生成大量鍵—值對的代碼時,一般都須要先 定義一個空字典:code
dict1 = {}
注意: -每一個鍵與值用冒號隔開(:),每對用逗號,每對用逗號分割,總體放在花括號中({})。 -鍵必須獨一無二,但值則沒必要。 -值能夠取任何數據類型,但必須是不可變的,如字符串,數組或元組。htm
關鍵字dict
和關鍵字參數建立Python裏有一個內建關鍵字dict
, 能夠直接使用這個關鍵字建立字典.
StuIfo = dict(name = "xiao ming",age = 12) print(StuIfo,type(StuIfo))
運行結果:{'name': 'xiao ming', 'age': 12} <class 'dict'>
list1 = [('Iphone',6999),('xiaomi',1999)] phoneprice = dict(list1) print(list1) print(phoneprice,type(phoneprice))
運行結果:
[('Iphone', 6999), ('xiaomi', 1999)] {'Iphone': 6999, 'xiaomi': 1999} <class 'dict'>
dict3 = dict(zip('python',[1,2,3,4,5,6])) print(dict3,type(dict))
運行結果: {'p': 1, 'y': 2, 't': 3, 'h': 4, 'o': 5, 'n': 6} <class 'type'>
zip函數能夠把兩個對象結合在一塊兒
</br>
字典是一種動態結構,可隨時在其中添加鍵—值對。要添加鍵—值對,可依次指定字典名、用 方括號括起的鍵和相關聯的值。 格式: 字典變量名['鍵(key)'] = 數據(value)
dict1 = {'color': 'green', 'points': 5} #原列表 dict1['x_position'] = 0 #添加鍵值對:'x_position': 0 dict1['y_position'] = 55 #添加鍵值對: 'y_position': 55 print(dict1)
運行結果:{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 55}
[注意]:鍵—值對的排列順序與添加順序不一樣。Python不關心鍵—值對的添加順序, 而只關心鍵和值之間的關聯關係。
.update
添加合併兩個利用一個字典項更新另外一個字典。將一個字典裏的項添加到另外一個字典裏,若兩個字典裏有相同的鍵,則更新其鍵對應的值。 語句:dict1.update(dict2)
dict4 = {"name":"xiao hong","age":12} dict5 = {"class":1, "grade":3} dict4.update(dict5) print(dict4) print(dict5)
運行結果:
{'name': 'xiao hong', 'age': 12, 'class': 1, 'grade': 3} {'class': 1, 'grade': 3} # 這個字典仍是存在的
</br>
能夠刪除單個字典元素或清除字典的所有內容。也能夠在單個操做中刪除整個字典。
del語句
刪除元素,或整個字典要顯式的刪除某個元素或整個字典,只需使用del語句。 使用del語句後,再訪問被刪除的元素或字典,引起一個異常,由於用del後該元素或字典再也不存在:
dict1 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'} del dict1['speed'] print(dict1['speed']) #運行後報錯:KeyError: 'speed' print(dict1) dict2 = {"name":"xiao hong","age":12} del dict2 print(dict2) #運行後報錯:NameError: name 'dict2' is not defined
運行結果:
KeyError: 'speed' {'x_position': 0, 'y_position': 25} NameError: name 'dict2' is not defined
.clear()
清空字典移除字典裏全部 items 。不接受任何參數,返回值爲 None 。 再訪問清空後的字典,會返回空字典. 使用 : 字典名.clear()
dict2 = {"name":"xiao hong","age":12} result = dict2.clear() print(result) #返回none print(dict2) #返回空字典
運行結果:
None {}
.pop
來刪除指定元素, 會返回被刪除的key所對應的值.移除字典數據pop()方法的做用是:刪除指定給定鍵所對應的值,返回這個值並從字典中把它移除。 若指定鍵不存在,一種狀況程序會報錯,另外一種狀況能夠指定一個值做爲返回值。 [注意]字典pop()方法與列表pop()方法做用徹底不一樣。
dict2 = {"name":"xiao hong","age":12,'class': 1, 'grade': 3} result1 = dict2.pop("age") #返回被刪除的,age對應的值12 result2 = dict2.pop("age") #再次調用上次被pop刪除的鍵值對, 直接打印輸出,會報錯. 運行後: result2 = dict2.pop("age"),KeyError: 'age' result3 = dict2.pop("age","key didn't found") # 在指定key後,再指定一個該key不存在時的返回值,會返回這個設定值. 運行後:key didn't found print(result1) print(result2) print(result3) print(dict2)
運行結果:
12 #print(result1) result2 = dict2.pop("age"),KeyError: 'age' #print(result2) key didn't found #print(result3) {'name': 'xiao hong', 'class': 1, 'grade': 3} #print(dict2)
popitem()方法
隨機拋出一對鍵值對,並返回值. 不接受任何參數.Python 字典 popitem() 方法隨機返回並刪除字典中的一對鍵和值(通常刪除末尾對)。 與列表的 pop 方法相似,但與之不一樣的是,因爲字典是無序的,故是隨機以(鍵,值)的形式拋出,而且返回(鍵,值)。不接受任何參數。 若是字典已經爲空,卻調用了此方法,就報出KeyError異常。
dict1 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'} result1 = dict1.popitem() print(result1)
運行結果:('speed', 'medium')
</br>
dict4 = {'name': 'xiao hong', 'age': 12, 'class': 1, 'grade': 3} dict4['class']=2 #更改鍵值對class:1爲class:2 print(dict4)
運行結果: {'name': 'xiao hong', 'age': 12, 'class': 2, 'grade': 3}
<br/>
dict1 = {'Name': 'Zara', 'Age': 7, `Class': 'First'} print ("dict['Name']: ", dict['Name']) print ("dict['Age']: ", dict['Age'])
運行結果:
dict['Name']: Zara dict['Age']: 7
[注意]若是用字典裏沒有的鍵訪問數據,會報錯. 可使用.get方法
,不會報錯,會返回None,也能夠指定返回值
</br>
for循環字典,默認遍歷的是字典的key:
dict1 = {'name': 'xiao hong', 'age': 12, 'class': 1, 'grade': 3} for i in dict1: print(i)
運行結果是:name age class grade
也能夠經過內置方法.keys()
來遍歷字典,遍歷字典裏全部的key.
dict1 = {'name': 'xiao hong', 'age': 12, 'class': 1, 'grade': 3} for key in dict1.keys(): print(key)
運行結果同上.
.values()
dict1 = {'name': 'xiao hong', 'age': 12, 'class': 1, 'grade': 3} for x in dict1.values(): print(x)
運行結果:xiao hong 12 1 3
.items()
獲取一個列表,這個列表內的放的元素,存的是元祖形式的原字典的鍵值對.dict1 = {'name': 'xiao hong', 'age': 12, 'class': 1, 'grade': 3} result = dict1.items() #print(result) #print(result)運行結果:dict_items([('name', 'xiao hong'), ('age', 12), ('class', 1), ('grade', 3)]) for key,value in result: #key接收元祖裏的第一個值,value接收元祖例的第二個值 print(key,value)
enumerate
和下標控制遍歷enumerate()是python的內置函數,在字典上是枚舉、列舉的意思
enumerate能夠獲取遍歷每一項的下標
這樣咱們能夠控制我遍歷過程,可能有的時候不須要全遍歷,能夠利用它中斷遍歷
dict1 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'} for index, key in enumerate(dict1): if index == 2: break print(key) print("-------這是一條分隔線-----------------") for index,value in enumerate(dict1.values()): #遍歷字典的value print(index,value) #獲取位置下標和字典的value值
運行結果:
x_position y_position -------這是一條分隔線----------------- 0 0 1 25 2 medium
</br> </br>
編號 | 函數 | 描述 |
---|---|---|
1 | cmp(dict1, dict2) | 在Python 3中再也不可用。 |
2 | len(dict) | 計算出字典的總長度。它將等於字典中的數據項數目。 |
3 | str(dict) | 生成字典的可打印字符串表示形式 |
4 | type(variable) | 返回傳遞變量的類型。若是傳遞變量是字典,那麼它將返回一個字典類型。 |
</br>
python 3.x 中字典的方法一共 11 種,用命令 dir(dict)
查看。每種方法的使用也可用 help(dict.clear)
查看。
編號 | 函數 | 描述 |
---|---|---|
1 | dict.clear() | 刪除字典dict的全部元素 |
2 | dict.copy() | 返回字典dict的淺拷貝 |
3 | dict.fromkeys() | 建立一個新的字典,其中包含seq的值和設置爲value的值。 |
4 | dict.get(key, default=None) | 對於鍵(key)存在則返回其對應值,若是鍵不在字典中,則返回默認值 |
5 | dict.has_key(key) | 此方法已刪除,使用in操做符代替 |
6 | dict.items() | 返回字典dict的(key,value)元組對的列表 |
7 | dict.keys() | 返回字典dict的鍵列表 |
8 | dict.setdefault (key, default = None) | 相似於get(),若是key不在字典dict中,則將執行賦值操做:dict [key] = default |
9 | dict.update(dict2) | 將字典dict2的鍵值對添加到字典dict |
10 | dict.values() | 返回字典dict的值列表 |
</br>
####[參考]:
####[擴展閱讀]: