原創(chuàng):XIAO油菜花
學習進度記錄:
《零基礎(chǔ)入門學習Python》P25:字典:當索引不好用時
《Python開發(fā)入門與爬蟲項目實戰(zhàn)》:Python中的函數(shù):遞歸查找
課后思考
0.當你聽到小伙伴們在談?wù)摗坝成洹焙壑Аⅰ肮稠屠!甭畚酢ⅰ吧⒘小被蛘摺瓣P(guān)系數(shù)組”的時候兼搏,事實上他們就是在討論什么呢?
1.用方括號(“[]”)括起來的數(shù)據(jù)我們叫列表怕轿,那么使用大括號(“{}”)括起來的數(shù)據(jù)我們就叫字典田盈,對嗎贴妻?
2.你如何理解有些東西字典做得到,但“萬能的”列表卻難以實現(xiàn)只磷?
3.下邊這些代碼经磅,他們都在執(zhí)行一樣的操作嗎?你看得出差別嗎钮追?
>>> 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})
答案
0.事實上他們就是在討論我們這一講介紹的“字典”预厌。
1.不對。
>>> NotADict = {1, 2, 3, 4, 5}
>>> type(NotADict)
<class 'set'>
不難發(fā)現(xiàn)元媚,雖然我們用大括號(“{}”)把一些數(shù)據(jù)括起來了轧叽,但由于沒有反映出這些數(shù)據(jù)有映射的關(guān)系,所以創(chuàng)建出來的不是字典刊棕,而是叫’set’的東西炭晒,那’set’到底又是什么?敬請期待后面的章節(jié)甥角。
2.有映射關(guān)系時网严,裂變實現(xiàn)起來非常復雜,不符合Python簡潔的初衷嗤无。
3.他們都在創(chuàng)建字典:{'one': 1, 'two': 2, 'three': 3}震束。
實戰(zhàn)
0.嘗試利用字典的特性編寫一個通訊錄程序吧,功能如圖:
print('|--- 1:查詢聯(lián)系人資料 ---|')
print('|--- 2:插入新的聯(lián)系人 ---|')
print('|--- 3:刪除已有聯(lián)系人 ---|')
print('|--- 4:退出通訊錄程序 ---|')
contacts = dict()
while 1:
instr = int(input('\n請輸入相關(guān)的指令代碼:'))
if instr == 1:
name = input('請輸入聯(lián)系人姓名:')
if name in contacts:
print(name + ' : ' + contacts[name])
else:
print('您輸入的姓名不再通訊錄中当犯!')
if instr == 2:
name = input('請輸入聯(lián)系人姓名:')
if name in contacts:
print('您輸入的姓名在通訊錄中已存在 -->> ', end='')
print(name + ' : ' + contacts[name])
if input('是否修改用戶資料(YES/NO):') == 'YES':
contacts[name] = input('請輸入用戶聯(lián)系電話:')
else:
contacts[name] = input('請輸入用戶聯(lián)系電話:')
if instr == 3:
name = input('請輸入聯(lián)系人姓名:')
if name in contacts:
del(contacts[name]) # 也可以使用dict.pop()
else:
print('您輸入的聯(lián)系人不存在垢村。')
if instr == 4:
break
print('|--- 感謝使用通訊錄程序 ---|')
如果你關(guān)注了我,希望你監(jiān)督我嚎卫,鼓勵我嘉栓,與我一起學習,一起成長!?