fluent python-chap3-1
class collections.OrderedDict([items])
返回一个 dict 子类的实例,它具有专门用于重新排列字典顺序的方法。

"""
move_to_end(key, last=True)
Move an existing key to either end of an ordered dictionary.
The item is moved to the right end if last is true (the default)
or to the beginning if last is false.
Raises KeyError if the key does not exist.
"""
from collections import OrderedDict
d = OrderedDict.fromkeys('abcde')
print(d)
#help(d.move_to_end)
d.move_to_end('b')
''.join(d) d.move_to_end('b', last=True)
''.join(d)
"""
popitem(last=True)
有序字典的 popitem() 方法移除并返回一个 (key, value) 键值对。
如果 last 值为真,则按 LIFO 后进先出的顺序返回键值对,
否则就按 FIFO 先进先出的顺序返回键值对。
"""
from collections import OrderedDict
d = OrderedDict.fromkeys('abcde')
print(d.popitem(last=False))
print(d)
但是普通的dict中,popitem()是没有参数的。
在字典中,setdefault(key,[default])比get(k,[default])要快速。
在dict中,k in my_dict.keys()中,这种操作在python3中非常快,因为dict.keys()返回的是一个视图。在python2中dict.keys()返回的是list,k in my_list这种操作效率很高,效率低很多。
而实际测试下来,两种操作在python3中时间也基本一样,就是说你先取出来和后取出来,都一样,都是view。说到视图view,应该还记得SQL数据中的视图,其实就是一个虚拟的存在,可以认为是一个缓存一样,物理存储上是不存在的,所以读取速度特别快,数据库中一般如果经常操作一部分数据,也会把这部分数据做成view,使用完了再释放。
d = {d:0 for d in range(10**7)}
from time import perf_counter as pc
t0=pc()
n = 0
for k in d.keys():
n+=1
t = pc()-t0
print(t)
lst = d.keys()
n=0
t1=pc()
for k in lst:
n+=1
th = pc()-t1
print(th)
PS.补充isinstance()函数和type()的使用和区别。
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type().
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
fluent python-chap3-1的更多相关文章
- 学习笔记之Fluent Python
Fluent Python by Luciano Ramalho https://learning.oreilly.com/library/view/fluent-python/97814919462 ...
- 「Fluent Python」今年最佳技术书籍
Fluent Python 读书手记 Python数据模型:特殊方法用来给整个语言模型特殊使用,一致性体现.如:__len__, __getitem__ AOP: zope.inteface 列表推导 ...
- Fluent Python: memoryview
关于Python的memoryview内置类,搜索国内网站相关博客后发现对其解释都很简单, 我觉得学习一个新的知识点一般都要弄清楚两点: 1, 什么时候使用?(也就是能解决什么问题) 2,如何使用? ...
- Python深入学习之《Fluent Python》 Part 1
Python深入学习之<Fluent Python> Part 1 从上个周末开始看这本<流畅的蟒蛇>,技术是慢慢积累的,Python也是慢慢才能写得优雅(pythonic)的 ...
- Fluent Python: Classmethod vs Staticmethod
Fluent Python一书9.4节比较了 Classmethod 和 Staticmethod 两个装饰器的区别: 给出的结论是一个非常有用(Classmethod), 一个不太有用(Static ...
- Fluent Python: @property
Fluent Python 9.6节讲到hashable Class, 为了使Vector2d类可散列,有以下条件: (1)实现__hash__方法 (2)实现__eq__方法 (3)让Vector2 ...
- Fluent Python: Mutable Types as Parameter Defaults: Bad Idea
在Fluent Python一书第八章有一个示例,未看书以先很难理解这个示例运行的结果,我们先看结果,然后再分析问题原因: 定义了如下Bus类: class Bus: def __init__(sel ...
- 《Fluent Python》---一个关于memoryview例子的理解过程
近日,在阅读<Fluent Python>的第2.9.2节时,有一个关于内存视图的例子,当时看的一知半解,后来查了一些资料,现在总结一下,以备后续查询: 示例复述 添加了一些额外的代码,便 ...
- Fluent Python: Slice
Pyhton中序列类型支持切片功能,比如list: >>> numbers = [1, 2, 3, 4, 5] >>> numbers[1:3] [2, 3] tu ...
- fluent Python
1.1 Python风格的纸牌 Python collections模块中的内置模块:namedtuple https://www.liaoxuefeng.com/wiki/0013747381250 ...
随机推荐
- 论文阅读: 面向Planning的端到端智驾Planning-oriented Autonomous Driving
原文地址:https://arxiv.org/abs/2212.10156 背景 当代自动驾驶系统多采用序列化的模块化的任务处理方式,比如感知.预测.规划等.为了处理多样的任务.达到高水平智能,当代智 ...
- 【译】You probably should stop using a custom TaskScheduler
来自Sergey Tepliakov的 https://sergeyteplyakov.github.io/Blog/csharp/2024/06/14/Custom_Task_Scheduler.h ...
- webpack4.15.1 学习笔记(七) — 懒加载(Lazy Loading)
懒加载或者按需加载,是一种很好的优化网页或应用的方式.实际上是先把代码在一些逻辑断点处分离开,然后在一些代码块中完成某些操作后,立即引用或引用另外一些新的代码块.这样加快了应用的初始加载速度,减轻了它 ...
- webpack性能优化方式之dll--- webpack.dll.config.js
通常来说,我们的代码都可以至少简单区分成业务代码和第三方库.如果不做处理,每次构建时都需要把所有的代码重新构建一次,耗费大量的时间.然后大部分情况下,很多第三方库的代码并不会发生变更(除非是版本升级) ...
- 靶机: AdmX_new
靶机: AdmX_new 准备阶段 靶机:https://download.vulnhub.com/admx/AdmX_new.7z 下载后进行 MD5:2948034da23a8acc1285fd4 ...
- Python用shp文件裁剪多个遥感影像的方法
本文介绍基于Python中ArcPy模块,基于矢量数据范围,对大量栅格遥感影像加以批量裁剪掩膜的方法. 首先,话不多说,本文所需要的代码如下所示. # -*- coding: utf-8 -* ...
- FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流
<FFmpeg开发实战:从零基础到短视频上线>一书的"10.2 FFmpeg推流和拉流"提到直播行业存在RTSP和RTMP两种常见的流媒体协议.除此以外,还有于20 ...
- 【WSDL】03 使用注解自定义服务信息
对原来的自定义WebService设置注解: package cn.cloud9.jax_ws.server.intf; import javax.jws.WebMethod; import java ...
- JAVA集合专题之深入学习
1.背景 集合虽然用起来非常简单... 但是面试确问得很多,很深.... 最重要的是集合的设计里面使用了大量的非常典型的多线程设计... 如果能把集合中的源码学一遍,相信你的多线程功底会大大提升... ...
- http与https通俗易懂的原理解析
1.背景 经常都在说http.https,都知道https是安全的, 但是, 为什么说http不安全呢? 为什么又说https是安全的呢? 接下来我将使用通俗易懂的方式给大家分析一下....... 2 ...