python中字典考题_python 字典一些常见的魔法方法以及遇到的面试题

2023-11-06

一、字典介绍

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)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中字典考题_python 字典一些常见的魔法方法以及遇到的面试题 的相关文章

  • 【PTA】【C语言】判断给定整数是否素数[加强版]

    素数是指在大于1的自然数中 除了1和它本身以外 不能被其他自然数整除的数 本题要求编写程序 判断从键盘输入的数是否素数 如果是素数 输出XX is prime number 的信息 输出XX is not prime number 的信息
  • jquery 取值 radio 问题

    1 获取选中值 三种方法都可以 input radio checked val input type radio checked val input name rd checked val 2 设置第一个Radio为选中值 input ra
  • android 文字高斯模糊,android高斯模糊

    高斯模糊 param context param sentBitmap param radius 0 lt radius lt 25 return SuppressLint NewApi public static Bitmap fastB
  • 【HUAWEI】PPP&PPPoE配合Radius认证配置案例

    背景 对于在一个大的园区网 要保证接入的安全性和合法性 有许多种手段 对于到端的接入用户 可以使用802 1X 对于移动办公人员 可以使用SSL 可以配合使用IPS 防火墙 上网行为管理等手段 不过 对于网关分布的网络呢 或者说 公司合并
  • 如何替代即将淘汰的Flash方案?

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由MarsBoy发表于云 社区专栏 导语 Web技术飞速发展的如今 我们在感受新技术带来的便捷和喜悦的同时 也时常在考虑着一个问题 老技术如何迁移 正如本文的主题一样 Flash
  • unity 项目仿cs知识点

    一 简介 1 人物部分 a 人物移动 b 镜头旋转 c 玩家开枪 动画 音频 枚举 弹孔 倍镜 2 敌人部分 a 敌人克隆 b 走向玩家 距离 方向 朝向 点乘 叉乘 二 人物部分 1 人物移动 CharacterController c
  • 几种主流国产linux操作系统配置pyqt5环境说明

    一 银河麒麟桌面 pyqt5已安装 直接运行就行 二 银河麒麟服务器 python3 get pip py local bin pip3 install pyqt5 python3 test1 py This application fai
  • JavaScript中的深拷贝

    1 什么是深拷贝 浅拷贝只是解决了第一层的拷贝问题 拷贝第一层的 基本类型值 以及第一层的 引用类型地址 并没有递归拷贝第二层以后的属性 深拷贝会拷贝所有的属性 拷贝的属性指向动态分配的内存 当对象和它所引用的对象一起拷贝时即发生深拷贝 深
  • C语言头插法创建双链表

    1 问题描述 使用头插法创建双链表 2 与单链表不同的是 双链表的结构体中多了一个变量就是指向当前节点的前驱节点 这样我们在循环遍历的时候可以通过当前节点的前驱指针找到前驱节点 在创建双链表的时候比单链表多了一个步骤就是对于前驱指针的操作
  • OpenMMLab OpenMMLab mmdeploy v1.1.0模型部署(一)

    一 MMDepoly整体框架 模型部署是指把机器学习训练生成的算法模型 部署到各类云 边 端设备上去 并使之高效运行 从而将算法模型实际地应用到现实生活中的各类任务中去 从而实现AI 的智能化转型 目前 我们已经支持 5 个算法库和 5 种
  • 动态规划:国王与金矿

    题目解析 有一个国家发现了5座金矿 每座金矿的黄金储量不同 需要参与挖掘的工人数也不同 参与挖矿工人的总数是10人 每座金矿要么全挖 要么不挖 不能派出一半人挖取一半金矿 要求用程序求解出 要想得到尽可能多的黄金 应该选择挖取哪几座金矿 第
  • 乔宇:深度模型让机器理解场景

    点击上方 深度学习大讲堂 可订阅哦 编者按 所谓场景 无论是 万家灯火 亦或是 巴山夜雨 于人是一种直观自然的感受 然而 对于机器而言 再多的温情脉脉 都也只是计算机世界冰冷的二进制符号 这区别的背后 其实是人在成长过程中形成的对世界的认知
  • OpenMV IDE通信协议分析

    OpenMV IDE通信协议分析 OpenMV IDE 通过usb cdc模式连接板端 也就是usb上虚拟了一个串口 基于串口实现了一套指令应答的交互协议 早期基于stm32 usb口实现 目前openmv适配扩展到多芯片上ide dbg调
  • linux循环结构和选择结构,Shell脚本:选择结构、循环结构、

    1 选择结构 1 选择结构的定义 选择结构是程序中带有判断的一种逻辑结构 只有符合一定的条件 程序体才会被执行 2 Linux shell 选择结构分类 if then控制结构 case esac控制结构 if then 控制结构 单分支
  • Python对某视频弹幕进行爬取,完成文本数据分析

    本文主要使用jieba requests wordcloud matplotlib imageio等包完成数据爬取 文本数据分析 可视化 弹幕数据 目录 1 爬取弹幕数据 分词并统计高频词 爬取数据 统计高频词 2 词性分析并生成词性分布条
  • Unity的C#编程教程_61_委托和事件 Delegates and Events 详解及应用练习

    文章目录 C Delegates C Events Example Working with C Delegates and Events Challenge Teleport Events Practical Event Driven P
  • 如何下载更改typora的主题

    文件 偏好设置 外观 获取主题 进入typora主题页typora主题页网址 选择合适的主题 从github页下载到第5步所打开的文件夹中 将css文件与pie文件夹放在typora主题文件夹中 在typora编辑器中更改主题 完成
  • Linux Traceroute命令教程和示例

    The network is an important part of the system administration Because without a network the server has nothing to do Whi
  • VMware 三种网络连接模式

    VMware虚拟机的三种网络连接模式 桥接 NAT 仅主机 网卡vmnet0 vmnet1 vmnet8区别 在VMware中 虚拟机的网络连接主要是由VMware创建的虚拟交换机负责实现的 VMware可以根据需要创建多个虚拟网络 VMw

随机推荐