筆記
字典
字典是Python唯一的映射類型,不是序列類型,字元串、清單和元組才是序列類型。
包含兩個關鍵字:鍵(key),值(value)
建立字典
(1)格式: 變量名 = {鍵:值} 各個 鍵:值對( 稱為相) 用逗号隔開
例如:

(2)建立空字典,例如:dict1 = {}
(3)利用dict()建立字典,
方法一:dic()隻有一個mapping(映射)類型的參數。例如:
裡面的映射類型不論是用元組還是清單構成都可以:
方法二:也可以用關鍵字(keyword) = 值(value)的形式建立字典,例如:
>>> dict4 = dict(小甲魚='讓程式設計改變世界',蒼井空='讓AV征服所有宅男')
>>> dict4
{'小甲魚': '讓程式設計改變世界', '蒼井空': '讓AV征服所有宅男'}
(注:小甲魚、蒼井空不可用引号括起來,否則會報錯)
(4)可以直接對關鍵字(鍵)指派,例如:
如果鍵原本字典中不存在,會自動建立該鍵:
調用字典
“字典名[鍵]” 輸出 “鍵” 所對應的 “值”,例如:
注:調用時字元(串)型關鍵字一定要加引号
課後作業
測試題:
0. 當你聽到小夥伴們在談論“映射”、“哈希”、“散列”或者“關系數組”的時候,事實上他們就是在讨論什麼呢?
答:字典。
1. 嘗試一下将資料('F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115)建立為一個字典并通路鍵 'C' 對應的值?
答:
>>> dict1 = dict((('F',70),('C',67),('h',104),('i',105),('s',115)))
>>> dict1['C']
67
或 dict1 = {'F': 70,'C': 67,'h': 104,'i':105,'s':115}
或 dict1 = dict(F = 70,C = 67,h = 104,i = 105,s = 115)
2. 用方括号(“[]”)括起來的資料我們叫清單,那麼使用大括号(“{}”)括起來的資料我們就叫字典,對嗎?
答:不對,大括号括起來的是集合,字典不僅要有大括号,還要有鍵值對。
3. 你如何了解有些東西字典做得到,但“萬能的”清單卻難以實作(臣妾做不到T_T)?
答:不想隻用數字索引元素,而用字元串來索引元素時。
4. 下邊這些代碼,他們都在執行一樣的操作嗎?你看得出差别嗎?
a = dict(one=1, two=2, three=3)
b = {'one': 1, 'two': 2, 'three': 3}
c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
d = dict([('two', 2), ('one', 1), ('three', 3)])
e = dict({'three': 3, 'one': 1, 'two': 2})
答:沒有本質上的差别,建立的是相同的字典。
5. 如圖,你可以推測出打了馬賽克部分的代碼嗎?
答:
(MyDict['id'],MyDict['name'],MyDict['sex']) = data.split(sep = ',')
動動手:
0. 嘗試利用字典的特性編寫一個通訊錄程式吧,功能如圖:
答:
dict1 = {}
print('''
|---歡迎進入通訊錄程式---|
|---1:查詢聯系人資料 ---|
|---2:插入新的聯系人 ---|
|---3:删除已有聯系人 ---|
|---4:退出通訊錄程式 ---|
''')
while 1:
command = input('\n請輸入相關的指令代碼:')
if command == '1':
name = input('請輸入聯系人姓名:')
if name in dict1:
print(name,':',dict1[name])
else:
print('該聯系人不存在!若要添加新聯系人請輸入2.')
elif command == '2':
name = input('請輸入聯系人姓名:')
if name in dict1:
print('您輸入的姓名在通訊錄中已存在 -->>',name,':',dict1[name])
while 1:
YN = input('是否修改使用者資料(YES/NO):')
if YN == 'YES':
dict1[name] = input('請輸入使用者聯系電話:')
break
elif YN == 'NO':
break
else:
print('輸入錯誤,請重新輸入!')
else:
dict1[name] = input('請輸入使用者聯系電話:')
elif command == '3':
name = input('請輸入聯系人姓名:')
if name in dict1:
del dict1[name]
else:
print('該聯系人不存在!')
elif command == '4':
print('|---感謝您使用通訊錄 ---|')
break
else:
print('輸入錯誤,請重新輸入!')
原版本部分代碼:
啟發:1.當需要一串代碼塊輸出後需要換行時,不一定要在最後一句換行,可以選擇在第一句換行,根據實際情況來選擇。
2.許多的continue顯然是不必要的