本篇文章给大家分享的是有关python字典一些常见的魔法方法以及遇到的面试题有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
成都创新互联公司自2013年创立以来,是专业互联网技术服务公司,拥有项目成都网站制作、网站设计、外贸网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元古城做网站,已为上家服务,为古城各地企业和个人服务,联系电话:028-86922220
一、字典介绍
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字典一些常见的魔法方法以及遇到的面试题有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。
分享标题:python字典一些常见的魔法方法以及遇到的面试题有哪些
本文来源:https://www.cdcxhl.com/article48/pjhhep.html
成都网站建设公司_创新互联,为您提供微信公众号、云服务器、网站策划、手机网站建设、品牌网站制作、网站营销
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联