您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關python字典一些常見的魔法方法以及遇到的面試題有哪些,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一、字典介紹
dict 類型不但在各種程序里廣泛使用,它也是 Python 語言的基石。模塊的命名空間、實例的屬性和函數的關鍵字參數中都可以看到字典的身影。跟它有關的內置函數都在__builtins__.__dict__模塊中。正是因為字典至關重要,Python 對它的實現做了高度優化,而散列表則是字典類型性能出眾的根本原因。
常規字典相比,OrderDict 對象內部維護著一個根據鍵插入順序排序的雙向鏈表,新插入的元素會被放到鏈表的尾部,從而實現記住插入順序的功能。不過,python3.7 版本之后,內置字典已經實現了一樣的能力,并在 python3.8 版本提供了 reversed() 方法,因此,OrderDict 已經沒什么存在的必要了.
二、常見的映射方法:
1.檢查 k 是否在字典 d 中
d.__contains__(k)
2.讓字典 d 能用 d[k] 的形式返回鍵 k 對應的值
d.__getitem__(k)
3.當 __getitem__
找不到對應鍵的時候,這個方法會被調用
d.__missing__(k)
4.獲取字典的某個屬性值
d.__getattribute__(*args, **kwargs)
5.若字典里有鍵k,則把它對應的值設置為 default,然后返回這個值;若無,則讓 d[k] = default,然后返回default
d.setdefault(k,[default])
三、遇到的面試題
1.字典用屬性訪問方式訪問元素,要使用dict[key]的方式獲取value,如何實現通過”."的形式來訪問字典元素?
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.有一個字典,d1 = {“a”: (1,2,3), “b”: (4,6,6), “c”: (2,5,8)},value類型是個tuple,根據value值的第一個下標元素對字典進行倒序排序。d1排序后的結果是 [(‘b’, (4, 6, 6)), (‘c’, (2, 5, 8)), (‘a’, (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.有個列表里面包含多個字典,例如:
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}
]
對上面的數據進行排序,根據先按分數再按年齡進行倒序排序。
from operator import itemgetterstudents_by_score_age = sorted(students, key=itemgetter("score", "age"), reverse=True)
以上就是python字典一些常見的魔法方法以及遇到的面試題有哪些,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。