天天看點

【小甲魚Python】字典:當索引不好用時1&&課後作業筆記課後作業

筆記

字典

字典是Python唯一的映射類型,不是序列類型,字元串、清單和元組才是序列類型。

包含兩個關鍵字:鍵(key),值(value)

建立字典

(1)格式: 變量名 = {鍵:值}           各個 鍵:值對( 稱為相) 用逗号隔開

          例如:

【小甲魚Python】字典:當索引不好用時1&&課後作業筆記課後作業

(2)建立空字典,例如:dict1 = {}

(3)利用dict()建立字典,

         方法一:dic()隻有一個mapping(映射)類型的參數。例如:

【小甲魚Python】字典:當索引不好用時1&&課後作業筆記課後作業

         裡面的映射類型不論是用元組還是清單構成都可以:

【小甲魚Python】字典:當索引不好用時1&&課後作業筆記課後作業

         方法二:也可以用關鍵字(keyword) = 值(value)的形式建立字典,例如:

>>> dict4 = dict(小甲魚='讓程式設計改變世界',蒼井空='讓AV征服所有宅男')
>>> dict4
{'小甲魚': '讓程式設計改變世界', '蒼井空': '讓AV征服所有宅男'}
           

        (注:小甲魚、蒼井空不可用引号括起來,否則會報錯)

(4)可以直接對關鍵字(鍵)指派,例如:

【小甲魚Python】字典:當索引不好用時1&&課後作業筆記課後作業

          如果鍵原本字典中不存在,會自動建立該鍵:

【小甲魚Python】字典:當索引不好用時1&&課後作業筆記課後作業

調用字典

“字典名[鍵]” 輸出 “鍵” 所對應的 “值”,例如: 

【小甲魚Python】字典:當索引不好用時1&&課後作業筆記課後作業

 注:調用時字元(串)型關鍵字一定要加引号

課後作業

測試題:

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. 如圖,你可以推測出打了馬賽克部分的代碼嗎?

【小甲魚Python】字典:當索引不好用時1&&課後作業筆記課後作業

答:

(MyDict['id'],MyDict['name'],MyDict['sex']) = data.split(sep = ',')
           

動動手:

0. 嘗試利用字典的特性編寫一個通訊錄程式吧,功能如圖:

【小甲魚Python】字典:當索引不好用時1&&課後作業筆記課後作業

答:

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('輸入錯誤,請重新輸入!')
           

 原版本部分代碼:

【小甲魚Python】字典:當索引不好用時1&&課後作業筆記課後作業

啟發:1.當需要一串代碼塊輸出後需要換行時,不一定要在最後一句換行,可以選擇在第一句換行,根據實際情況來選擇。

           2.許多的continue顯然是不必要的