溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python字典一些常見的魔法方法以及遇到的面試題有哪些

發(fā)布時(shí)間:2021-10-21 15:13:42 來(lái)源:億速云 閱讀:117 作者:柒染 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)python字典一些常見的魔法方法以及遇到的面試題有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

一、字典介紹

dict 類型不但在各種程序里廣泛使用,它也是 Python 語(yǔ)言的基石。模塊的命名空間、實(shí)例的屬性和函數(shù)的關(guān)鍵字參數(shù)中都可以看到字典的身影。跟它有關(guān)的內(nèi)置函數(shù)都在__builtins__.__dict__模塊中。正是因?yàn)樽值渲陵P(guān)重要,Python 對(duì)它的實(shí)現(xiàn)做了高度優(yōu)化,而散列表則是字典類型性能出眾的根本原因。

常規(guī)字典相比,OrderDict 對(duì)象內(nèi)部維護(hù)著一個(gè)根據(jù)鍵插入順序排序的雙向鏈表,新插入的元素會(huì)被放到鏈表的尾部,從而實(shí)現(xiàn)記住插入順序的功能。不過(guò),python3.7 版本之后,內(nèi)置字典已經(jīng)實(shí)現(xiàn)了一樣的能力,并在 python3.8 版本提供了 reversed() 方法,因此,OrderDict 已經(jīng)沒(méi)什么存在的必要了.

二、常見的映射方法:

1.檢查 k 是否在字典 d 中

d.__contains__(k)

2.讓字典 d 能用 d[k] 的形式返回鍵 k 對(duì)應(yīng)的值

d.__getitem__(k)

3.當(dāng) __getitem__ 找不到對(duì)應(yīng)鍵的時(shí)候,這個(gè)方法會(huì)被調(diào)用

d.__missing__(k)

4.獲取字典的某個(gè)屬性值

d.__getattribute__(*args, **kwargs)

5.若字典里有鍵k,則把它對(duì)應(yīng)的值設(shè)置為 default,然后返回這個(gè)值;若無(wú),則讓 d[k] = default,然后返回default

d.setdefault(k,[default])

三、遇到的面試題

1.字典用屬性訪問(wèn)方式訪問(wèn)元素,要使用dict[key]的方式獲取value,如何實(shí)現(xiàn)通過(guò)”."的形式來(lái)訪問(wèn)字典元素?

class mydict(dict):
    def __getattr__(self, item):          try:               return self[item]          except:               raise AttributeError(item)               myd = mydict(a=1, b=2)print(myd.a)print(myd.c)

2.有一個(gè)字典,d1 = {“a”: (1,2,3), “b”: (4,6,6), “c”: (2,5,8)},value類型是個(gè)tuple,根據(jù)value值的第一個(gè)下標(biāo)元素對(duì)字典進(jìn)行倒序排序。d1排序后的結(jié)果是 [(‘b’, (4, 6, 6)), (‘c’, (2, 5, 8)), (‘a(chǎn)’, (1, 2, 3))]

d1 = {"a": (1,2,3), "b": (4,6,6), "c": (2,5,8)}res = sorted(d1.items(), key=lambda x:x[1][0], reverse=True)print(res)

3.有個(gè)列表里面包含多個(gè)字典,例如:

students = [ {"name": "Stanley", "age": 22, "score": 92},   {"name": "Peter", "age": 19, "score": 99},     {"name": "Well", "age": 23, "score": 82},    {"name": "Bob", "age": 20, "score": 88},  {"name": "Lily", "age": 22, "score": 95}  ]

對(duì)上面的數(shù)據(jù)進(jìn)行排序,根據(jù)先按分?jǐn)?shù)再按年齡進(jìn)行倒序排序。

from operator import itemgetterstudents_by_score_age = sorted(students, key=itemgetter("score", "age"), reverse=True)

以上就是python字典一些常見的魔法方法以及遇到的面試題有哪些,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI