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 ...
随机推荐
- Sql Client Show All Conten Of A Field
Terminate the query with \G in place of ; For example: SELECT content_txt FROM sometable\G
- Luogu P2036 [COCI2008-2009 #2] PERKET
今天我们来看一道题:Luogu P2036 [COCI2008-2009 #2] PERKET 这道题不难,典型的暴力枚举 由于食材数量随机,无法直接用循环解,但是可以使用递归 \(MY_{CODE: ...
- 学习笔记--Java中fpackage和import
package和import 关于Java语言中的包机制: 包又称为package,Java中引入package主要是为了方便管理 怎么样定义 Java源程序的第一行编写package语句 packa ...
- 释放资源的方式try-with-resources
1.try-catch-finally 2.try-with-resources 使用方法 try(//这里定义你要使用的资源){} catch(){} 注意:try()里只能存放流对象(资源对象), ...
- hbuilderx生成ios证书和上架全教程
现在很多公司都使用uniapp作为底层框架来开发app应用,而uniapp的开发工具hbuilderx云打包的时候,需要证书和证书profile文件. 假如是ios应用,则还需要上架到appstore ...
- 如何安装Ascend深度学习套件
1. 驱动安装 1.1 驱动测试 输入测试命令: npu-smi info 结果如下: 1.2 Ascend驱动未安装 请参考Ascend驱动的安装文档,进行安装对应显卡的驱动,文档链接如下:http ...
- jmeter forEach循环获取response参数值进行接口请求
jmeter forEach循环获取response参数值进行接口请求 注意: 一,ForEach控制器 输入变量前缀:输入正则表达式变量的引用名称即可 Start index for loop(ex ...
- 【DataBase】MySQL 09 SQL函数 单行函数其三 日期函数
日期函数 日期&时间函数 NOW 当前日期时间. CURDATE 当前日期. CURTIME 当前时间 -- NOW();返回系统日期+时间 SELECT NOW(); -- CURDATE( ...
- 【Java】Maven模块化工程SSM整合
创建数据库一个演示表User CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(64) DEFAULT NU ...
- AI的技术发展:记忆与想象力 —— 【人工智能】记忆、想象与AI | 查兰·兰加纳特 | 心理学与神经科学家 | 人脑如何记忆 | 内部模型 | 稳定可塑性难题 | 想象力的由来 | AI内容传播 | 脑机接口BCI
原文地址: https://www.youtube.com/watch?v=cHYKbVP1GTQ 加利福尼亚大学戴维斯分校教授.心理学家兼神经科学家查兰·兰加纳特Charan Ranganath,最 ...