日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FishC笔记—26 讲 字典:当索引不好用时2

發(fā)布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FishC笔记—26 讲 字典:当索引不好用时2 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本期內(nèi)容詳解:
1、dict()是一個工廠函數(shù),調(diào)用后會生成該類型的實例
2、字典的一種內(nèi)建方法:dict1.fromkeys(s[,v])
3、訪問字典的方法:
1)dict1.keys()、dict1.value()、dict1.items()(返回每一項)
2)dict1.get(),對應(yīng)鍵的值不存在的話返回一個None,這樣程序就不會報錯
3)key in dict1:查找的是鍵,而不是值
4)dict1.clear():清空字典,不建議使用直接賦空值的方法:dict1 = {}
例如:

>>> a = {'A','B'} >>> b = a >>> a = {} >>> b {'B', 'A'} >>> a {}

5)dict1.copy():淺拷貝
例如:

>>> a = {1:'one',2:'two',3:'three'} >>> b = a.copy() >>> c = a >>> c[4] = 'four' >>> c {1: 'one', 2: 'two', 3: 'three', 4: 'four'} >>> a {1: 'one', 2: 'two', 3: 'three', 4: 'four'} >>> b {1: 'one', 2: 'two', 3: 'three'}

6)dict1.pop():給定鍵彈出相應(yīng)值
7)dict1.popitem():給定鍵彈出相應(yīng)項(包括鍵和值)
8)dict1.setdefault():找不到給定鍵對應(yīng)的值話會自動在字典中創(chuàng)建一個基于該鍵的項(區(qū)別于dict1.get()的結(jié)果)
9)dict1.update():根據(jù)一個字典或映射關(guān)系去更新另一個字典
例如以下用法(結(jié)果類似于在字典中添加項或更新已存在鍵對應(yīng)的值):

>>> a {1: 'one', 2: 'two', 3: 'three', 4: 'four'} >>> d = {7:'seven'} >>> a.update(d) >>> a {1: 'one', 2: 'two', 3: 'three', 4: 'four', 7: 'seven'}

Python的字典是否支持一鍵(Key)多值(Value)?

答:不支持,對相同的鍵再次賦值會將上一次的值直接覆蓋。

在字典中,如果試圖為一個不存在的鍵(Key)賦值會怎樣?

答:會自動創(chuàng)建對應(yīng)的鍵(Key)并添加相應(yīng)的值(Value)進去。

成員資格操作符(in和not in)可以檢查一個元素是否存在序列中,當(dāng)然也可以用來檢查一個鍵(Key)是否存在字典中,那么請問哪種的檢查效率更高些?為什么?

答:在字典中檢查鍵(Key)是否存在比在序列中檢查指定元素是否存在更高效。因為字典的原理是使用哈希算法存儲,一步到位,不需要使用查找算法進行匹配,因此時間復(fù)雜度是O(1),效率非常高。

Python對鍵(Key)和值(Value)有沒有類型限制?

答:Python對鍵的要求相對要嚴(yán)格一些,要求它們必須是可哈希(Hash)的對象,不能是可變類型(包括變量、列
表、字典本身等)。
但是Python對值是沒有任何限制的,它們可以是任意的Python對象。
如果不清楚哈希原理以及字典的存放原理的童鞋,推薦閱讀下小甲魚幫你整理的這篇文章:你知道Python的字典
(Dict)是如何存儲的嗎?(http://bbs.fishc.com/thread-45016-1-1.html)

請目測下邊代碼執(zhí)行后,字典dict1的內(nèi)容是什么?

>>> dict1.fromkeys((1, 2, 3), ('one', 'two', 'three')) >>> dict1.fromkeys((1, 3), '數(shù)字')

答:執(zhí)行完成后,字典dict1的內(nèi)容是:{1: ‘?dāng)?shù)字’, 3: ‘?dāng)?shù)字’}
這里要注意的是,fromkeys方法是直接創(chuàng)建一個新的字典,不要試圖使用它來修改一個原有的字典,因為它會直接無情的用把整個字典給覆蓋掉。

如果你需要將字典dict1 = {1: ‘one’, 2: ‘two’, 3: ‘three’}拷貝到dict2,你應(yīng)該怎么做?

答:可以利用字典的copy()方法:dict2 = dict1.copy(),在其他語言轉(zhuǎn)移到Python小伙伴們剛開始可能會習(xí)慣性的直接用賦值的方法(dict2 = dict1),這樣子做在Python中只是將對象的引用拷貝過去而已(如筆記中提到的例子)。

嘗試編寫一個用戶登錄程序(這次嘗試將功能封裝成函數(shù)),程序?qū)崿F(xiàn)如圖:

def Load(): dict1 = {'小甲魚':'FishC'} while 1: key = input(''''' |--- 新建用戶:N/n ---| |--- 登錄帳號:E/e ---| |--- 退出程序:Q/q ---| |--- 請輸入指令代碼:''') if key == 'N' or key == 'n': temp_name = input('請輸入用戶名:') while temp_name in dict1: temp_name = input('此用戶名已經(jīng)被使用,請重新輸入:') 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('歡迎進入系統(tǒng),請點右上角的X結(jié)束程序!') continue elif key == 'Q' or key == 'q': break Load()

總結(jié)

以上是生活随笔為你收集整理的FishC笔记—26 讲 字典:当索引不好用时2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。