Python 字典(Dictionary)
字典是另一種可變容器模型,且可儲存任意型別物件。
字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包含在花括號({})中,格式如下所示:
#d = {key1 : value1, key2 : value2 }
鍵必須是唯一的,但值則不必。
值可以取任何資料類型,但鍵必須是不可變的,如字串,數字或元組。
一個簡單的字典實例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
#存取字典裡的值把對應的鍵放入熟悉的方括弧,如下實例:
#!/usr/ bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];
以上實例輸出結果: dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];
dict['Name']: Zara
如果用字典裡沒有的鍵存取數據,會輸出錯誤如下:dict['Age']: 7
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
#print "dict['Alice']: ", dict['Alice'];
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
#print "dict['Alice']: ", dict['Alice'];
以上實例輸出結果:
dict['Zara']:
Traceback (most recent call last):
File "test.py", line 4, in <module>
print 》 ##KeyError: 'Alice'
Traceback (most recent call last):
File "test.py", line 4, in <module>
print 》 ##KeyError: 'Alice'
修改字典
為字典新增內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下實例:
##!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
dict['School'] = "DPS School"; # Add new entry
print "dict['School']: ", dict['School'];#Nprint##o
##Scge" ", dict['Age'];#以上實例輸出結果:dict[' Age']: 8
dict['School']: DPS School
##刪除字典元素
可以刪除單一的元素也能清除字典,清空只需一項操作。
顯示刪除一個字典用del指令,如下實例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # 刪除鍵是'#
del dict['Name']; # 刪除鍵是' Name'的條目可以刪除單一的元素也能清除字典,清空只需一項操作。
顯示刪除一個字典用del指令,如下實例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
dict.clear(); # 清空字典所有條目
del dict ; # 刪除字典c"dict['Age'): ;
print "dict['School']: ", dict['School'];
但這會引發一個異常,因為用del後字典不再存在:
print "dict['School']: ", dict['School'];
但這會引發一個異常,因為用del後字典不再存在:
dict['Age']:Traceback (most recent call last): File "test.py", line 8, in < Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable註:
del()方法後面也會討論。字典鍵的特性
1)不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,後一個值會被記住,如下實例:
以上實例輸出結果:
dict['Name']: Manni
2)鍵必須不可變,所以可以用數字,字串或元群組充當,所以用清單就不行,如下實例:
!/usr/bin/python
dict = {['Name']: 'Zara', 'Age ': 7};
print "dict['Name']: ", dict['Name'];
dict = {['Name']: 'Zara', 'Age ': 7};
print "dict['Name']: ", dict['Name'];
#以上實例輸出結果:
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict {['Name'>
dict ;
TypeError: list objects are unhashableFile "test.py", line 3, in <module>
dict {['Name'>
dict ;
#字典內建函數&方法Python字典包含了以下內建函數:
#序號 | 函數及描述 |
---|---|
#1 | cmp(dict1, dict2) | 比較兩個字典元素。
2 | len(dict) | 計算字典元素個數,即鍵的總數。
3 | str(dict) | 輸出字典可列印的字串表示。
4 | type(variable) | 傳回輸入的變數類型,如果變數是字典就回傳字典類型。
序號 | 函數及描述 |
---|---|
1 | radiansdict.clear() | 刪除字典內所有元素
2 | radiansdict .copy() | 傳回一個字典的淺複製
3 | radiansdict.fromkeys() | 建立一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
4 | #radiansdict.get(key, default=None) | 傳回指定鍵的值,如果值不在字典中傳回default值
5 | radiansdict.has_key(key) | 如果鍵在字典dict裡傳回true,否則回傳false
6 | radiansdict.items() | 以列表傳回可遍歷的(鍵, 值) 元組數組
7 | radiansdict.keys() | 以列表傳回一個字典所有的鍵
8 | radiansdict.setdefault(key , default=None) | 和get()類似, 但如果鍵不存在於字典中,將會加鍵並將值設為default
9 | radiansdict.update(dict2) | 把字典dict2的鍵/值對更新到dict裡
10 | radiansdict.values() | 以列表傳回字典中的所有值