內容簡述:
- 1、字典(Dict)
1、字典(Dict)
和列表,元組通過下標序列來索引元素不同,字典使用「鍵值對」的形式來儲存資料,通過鍵來索引值,建立字典時,鍵不能重複,重複後面的會覆蓋!因為鍵必須不可變,所以鍵可用數字,字串或元組,但是不能用列表!使用「:冒號」分隔鍵與值,多個鍵值對用「,逗號」分隔;字典 也是支援巢狀的!另外還有一點要注意:字典是無序的!!!
① 字典建立
可以用過「大括號」直接構造或者通過 dict()函式
和 fromkeys()函式
進行構造,程式碼示例如下:
# 直接通過大括號進行建立
dict_1 = {} # 定義一個空字典
dict_2 = {'a': 1, 'b': 2, 3: "c"} # 定義一個普通字典
dict_3 = dict_2.copy() # 淺複製一個字典
# 通過dict函式建立字典
dict_4 = dict(a=1, b=2, c=3)
dict_5 = dict(zip(['a','b','c'],(1,2,3)))
dict_6 = dict([('a',1),('b',2),('c',3)])
# 通過fromkeys建立並返回新的字典,有兩個引數,鍵和鍵對應的值
# 值可以不提供,預設None,不過有個輸出結果要注意一下!!!
dict_7 = {}.fromkeys(['a','b','c'],[1,2,3])
# 輸出字典:
print('dict_1:%s' % dict_1)
print('dict_2:%s' % dict_2)
print('dict_3:%s' % dict_3)
print('dict_4:%s' % dict_4)
print('dict_2:%s' % dict_5)
print('dict_3:%s' % dict_6)
print('dict_4:%s' % dict_7)
複製程式碼
執行結果如下:
dict_1:{}
dict_2:{'a': 1, 'b': 2, 3: 'c'}
dict_3:{'a': 1, 'b': 2, 3: 'c'}
dict_4:{'a': 1, 'b': 2, 'c': 3}
dict_5:{'a': 1, 'b': 2, 'c': 3}
dict_6:{'a': 1, 'b': 2, 'c': 3}
dict_7:{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}
複製程式碼
② 訪問字典中的元素
程式碼示例如下:
# 通過鍵查詢對應的值,如果沒有這個鍵會報錯TypeError
print(dict_1['b'])
# 通過get()方法查詢鍵對應的值,沒有的話預設返回None,你也可以改成返回其他值
print(dict_1.get('d'))
# 和get()類似,如果找不到鍵的話會自動新增鍵,並賦值None
print(dict_1.setdefault('d'))
print(dict_1)
# 判斷字典中是否有某個鍵
print('d' in dict_1)
print(dict_1.__contains__('d'))
# 獲得字典裡所有的鍵
print(dict_1.keys())
# 獲得字典裡所有的值
print(dict_1.values())
# 獲得字典裡所有的鍵值對
print(dict_1.items())
複製程式碼
執行結果如下:
2
None
None
{'a': 1, 'b': 2, 3: 'c', 'd': None}
True
True
dict_keys(['a', 'b', 3, 'd'])
dict_values([1, 2, 'c', None])
dict_items([('a', 1), ('b', 2), (3, 'c'), ('d', None)])
複製程式碼
③ 修改字典
程式碼示例如下:
dict_1 = {'a': True, 'b': 2, 3: "c"}
dict_1['b'] = 'HaHa'
print(dict_1)
# 把別的字典裡的鍵值對更新到字典裡
dict_1.update({'d':'Pig', 'e':'1'})
print(dict_1)
複製程式碼
執行結果如下:
{'a': True, 'b': 'HaHa', 3: 'c'}
{'a': True, 'b': 'HaHa', 3: 'c', 'd': 'Pig', 'e': '1'}
複製程式碼
④ 字典遍歷
程式碼示例如下:
dict_1 = {'a': True, 'b': 2, 3: "c"}
# 方法一
for d in dict_1:
print("%s:%s," % (d, dict_1.get(d)),end='')
# 方法二
for (k, v) in dict_1.items():
print("%s:%s," % (k, v),end='')
複製程式碼
執行結果如下:
a:True,b:2,3:c,
a:True,b:2,3:c,
複製程式碼
⑤ 有序字典
上面也說了Python中預設的字典是無序的,即:遍歷字典取出元素的順序不確定,因為元素時按Hash來儲存的。但是有時,有些應用場景,我們希望遍歷字典取出元素的順序和我們儲存元素進去的順序一致,可以直接利用Python內建的collection模組裡的子類「OrderedDict」,實現對字典元素的排序。使用程式碼示例如下:
from collections import OrderedDict
dict_2 = OrderedDict()
dict_2[1] = 'a'
dict_2[2] = 'b'
dict_2[3] = 'c'
dict_2[4] = 'd'
dict_2[5] = 'e'
for (k, v) in dict_2.items():
print("%s:%s," % (k, v),end='')
複製程式碼
執行結果如下:
1:a,2:b,3:c,4:d,5:e,
複製程式碼
如果本文對你有所幫助,歡迎
留言,點贊,轉發
素質三連,謝謝?~