本期內容詳解:
1、dict()是乙個工廠函式,呼叫後會生成該型別的例項
2、字典的一種內建方法:dict1.fromkeys(s[,v])
3、訪問字典的方法:
1)dict1.keys()、dict1.value()、dict1.items()(返回每一項)
2)dict1.get(),對應鍵的值不存在的話返回乙個none,這樣程式就不會報錯
3)key in dict1:查詢的是鍵,而不是值
4)dict1.clear():清空字典,不建議使用直接賦空值的方法:dict1 = {}
例如:
>>> a =
>>> b = a
>>> a = {}
>>> b
>>> a
{}
5)dict1.copy():淺拷貝
例如:
>>> a =
>>> b = a.copy()
>>> c = a
>>> c[4] = 'four'
>>> c
>>> a
>>> b
6)dict1.pop():給定鍵彈出相應值
7)dict1.popitem():給定鍵彈出相應項(包括鍵和值)
8)dict1.setdefault():找不到給定鍵對應的值話會自動在字典中建立乙個基於該鍵的項(區別於dict1.get()的結果)
9)dict1.update():根據乙個字典或對映關係去更新另乙個字典
例如以下用法(結果類似於在字典中新增項或更新已存在鍵對應的值):
>>> a
>>> d =
>>> a.update(d)
>>> a
python的字典是否支援一鍵(key)多值(value)?
在字典中,如果試圖為乙個不存在的鍵(key)賦值會怎樣?
答:會自動建立對應的鍵(key)並新增相應的值(value)進去。
成員資格操作符(in和not in)可以檢查乙個元素是否存在序列中,當然也可以用來檢查乙個鍵(key)是否存在字典中,那麼請問哪種的檢查效率更高些?為什麼?
答:在字典中檢查鍵(key)是否存在比在序列中檢查指定元素是否存在更高效。因為字典的原理是使用雜湊演算法儲存,一步到位,不需要使用查詢演算法進行匹配,因此時間複雜度是o(1),效率非常高。
python對鍵(key)和值(value)有沒有型別限制?
答:python對鍵的要求相對要嚴格一些,要求它們必須是可雜湊(hash)的物件,不能是可變型別(包括變數、列
表、字典本身等)。
但是python對值是沒有任何限制的,它們可以是任意的python物件。
如果不清楚雜湊原理以及字典的存放原理的童鞋,推薦閱讀下小甲魚幫你整理的這篇文章:你知道python的字典
(dict)是如何儲存的嗎?(
請目測下邊**執行後,字典dict1的內容是什麼?
>>> dict1.fromkeys((1, 2, 3), ('one', 'two', 'three'))
>>> dict1.fromkeys((1, 3), '數字')
答:執行完成後,字典dict1的內容是:
這裡要注意的是,fromkeys方法是直接建立乙個新的字典,不要試圖使用它來修改乙個原有的字典,因為它會直接無情的用把整個字典給覆蓋掉。
如果你需要將字典dict1 = 拷貝到dict2,你應該怎麼做?
答:可以利用字典的copy()方法:dict2 = dict1.copy(),在其他語言轉移到python小夥伴們剛開始可能會習慣性的直接用賦值的方法(dict2 = dict1),這樣子做在python中只是將物件的引用拷貝過去而已(如筆記中提到的例子)。
嘗試編寫乙個使用者登入程式(這次嘗試將功能封裝成函式),程式實現如圖:
|--- 新建使用者:n/n ---|
|--- 登入帳號:e/e ---|
|--- 退出程式:q/q ---|
|--- 請輸入指令**:''')
if key == 'n'
or key == 'n':
temp_name = input('請輸入使用者名稱:')
while temp_name in dict1:
temp_name = input('此使用者名稱已經被使用,請重新輸入:')
temp_password = input('請輸入密碼:')
dict1[temp_name] = temp_password
print('註冊成功,趕緊試試登入吧^_^')
continue
elif key == 'e'
or key == 'e':
temp_name = input('請輸入使用者名稱:')
while temp_name not
in dict1:
temp_name = input('您輸入的使用者名稱不存在,請重新輸入:')
temp_password = input('請輸入密碼:')
while temp_password != dict1[temp_name]:
temp_password = input('密碼錯誤,請重新輸入:')
print('歡迎進入系統,請點右上角的x結束程式!')
continue
elif key == 'q'
or key == 'q':
break
load()
FishC筆記 16 講 序列,序列
本期內容詳解 列表 元組和字串的共同點 一些重要的bif 1 list 把乙個可迭代的物件轉換為列表 2 tuple iterable 把乙個可迭代的物件轉化為元組 3 str obj 把obj物件轉化為字串 4 max min 返回序列或者引數集合中的最大或最小值 5 sum iterable s...
字典 當索引不好用時
字典是python中唯一內建的對映型別。字典中的值沒有特殊的順序,但是都儲存在乙個特定的鍵 key 下。鍵可以是數字 字串甚至是元組。字典中的鍵是唯一的 其他型別的對映也是如此 而值並不唯一 可以用dict函式來建立字典 items d dict items print d 字典裡的儲存是沒有順序的...
FishC筆記 18 講 函式 靈活即強大
本期內容詳解 1 分清楚形參和實參 2 函式文件 是函式的一部分,於解釋不同,使用help 函式名 或者 函式名 doc 可以檢視到 3 關鍵字引數 在乙個函式的引數較多的時候作用比較明顯 給引數的名字下定義,例如 def f name,words 如下兩種引用的方法是等價的 f a,b f wor...