Python说文解字_杂谈07
1. 深入dict
from collections.abc import Mapping,MutableMapping
# dict 属于mapping类型 a = {}
print(isinstance(a,MutableMapping))
2.常用方法:
a = {"bobby1":{"company":"imooc"},
"bobby2:":{"company":"imooc"}}
# clear
# a.clear()
#copy,返回浅拷贝
# new_dict = a.copy()
# new_dict["bobby1"]["company"] = "imooc3"
# 深拷贝
# import copy
# new_dict = copy.deepcopy(a)
# new_dict["bobby1"]["company"] = "imooc3"
# fromkeys
new_list = ["bobby1","bobby2"]
new_dict = dict.fromkeys(new_list,{"company":"imooc"})
# get
# value = new_dict.get("bobby",{})
# print(value)
#items
# for key,value in new_dict.items():
# print(key,value)
# setdefault
# 他对去调用D.get(k,d)同时D[k] 设置
default_value = new_dict.setdefault("bobby","imooc")
print(new_dict)
# update:
new_dict.update(bobby="imooc")
new_dict.update([("bobby","imooc")])
new_dict.update((("bobby","imooc"),))
3. dict的子类
# 不建议继承list和dict
class Mydict(dict):
def __setitem__(self,key,value):
super().__setitem__(key,value*) my_dict = Mydict(one=)
my_dict["one"] =
print(my_dict)
# 建议用UserDict
from collections import UserDict class Mydict(UserDict):
def __setitem__(self,key,value):
super().__setitem__(key,value*) my_dict = Mydict(one=)
print(my_dict)
from collections import defaultdict class Mydict(UserDict):
def __setitem__(self,key,value):
super().__setitem__(key,value*) my_dict = Mydict(one=)
print(my_dict) my_dict = defaultdict(dict)
my_value = my_dict["bobby"] # __missing__方法,如果找不到某个key,那么实现一个keyvalue
记住:其实setdefault里面实现了__missing__魔法函数,表示如果是找不到某个key,那么实现一个默认的keyvalue
3. set和frozenset
# set 集合 frozenset 不可变集合 无序 不重复
s = set('abcde')
s = set(['a','b','c'])
print(s) # 初始化方法
s = {'a','b'}
print(type(s)) s2 = frozenset('abcde') # 不可变的类型,可以作为dict的key
print(s2)
记住:和数学的操作一样,差集,交集,并集等。。
记住:在去重上应用很高,性能很高。
记住:还可以用:
for "c" in set:
print ("i am in set")
记住:这里就实现了__contain__方法
记住:还有实现了__issubset__方法
4. dict和set他们背后实现的原理:
1. dict的key或者set的值都是必须可以hash的,不可变对象都是可以hash的,str,fronzenset,tuple,自己实现的类的__hash__
2. dict的内存花销大,但是查询速度快,自定义的对象或者Python内部的对象都使用dict包装的。
3.dict的存储顺序和元素添加顺序有关。
4.添加数据有可能改变已有数据的顺序。
5.list和array是一种自增的方式,随着数据在增加,申请内存空间的动作不断操作。
6.dict只有在内存空间少于1/3的时候才会去申请内存空间。
Python说文解字_杂谈07的更多相关文章
- Python说文解字_杂谈05
1. isinstance和type: is和==符号,is指的是内存地址,是不是一个对象,ID知否相同 集成链 class A: pass class B(A): pass b = B() prin ...
- Python说文解字_杂谈09
1. 元类编程代码分析: import numbers class Field: pass class IntField(Field): # 数据描述符: # 初始化 def __init__(sel ...
- Python说文解字_杂谈08
1. Python变量到底是什么? Python和Java中的变量本质不一样,python的变量实质是一个指针 int str,便利贴 a = 1 # 1. a贴在1上面 # 2. 它的过程是先生成对 ...
- Python说文解字_杂谈01
1. Python在Ubuntu下面下载Python 2. 安装依赖包 sudo apt-get update sudo apt-get install build-essential python- ...
- Python说文解字_杂谈06
1. 序列类型的分类: 容器类型:list.tuple,deque 扁平序列:str.bytes.bytearray.array.array 可变序列:list.dequte.bytearray.ar ...
- Python说文解字_杂谈04
1. 鸭子类型: 当你看到一只鸟走来像鸭子,游泳起来像鸭子,叫起来也像鸭子,他么他就可以叫做鸭子.任何可迭代的对象.一样的方法,可以用可迭代的话,就可以迭代的组合打印.__getitem__可以塞到任 ...
- Python说文解字_杂谈03
1. 我们从前面的知识得到,所有的类都要继承自object这个基类(超类),另外我们知道“继承”可以继承类的属性和方法.我们起始通过type创建类的时候,自然而然的也会从ojbect继承他的一些属性和 ...
- Python说文解字_杂谈02
1. Py中三个中啊哟的概念type.object和class的关系. type生成了int生成了1 type->class->obj type用来生成类对象的 object是最顶层的基类 ...
- Python说文解字_详解元类
1.深入理解一切接对象: 1.1 什么是类和对象? 首先明白元类之前要明白什么叫做类.类是面向对象object oriented programming的重要概念.在面向对象中类和对象是最基本的两个概 ...
随机推荐
- HihoCoder第十二周:刷油漆
#1055 : 刷油漆 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho有着一棵灰常好玩的树玩具!这棵树玩具是由N个小球和N-1根木棍拼凑而成,这N个小球 ...
- PHP数据库连接
<?php //设置编码格式 header("Content-type:text/html;charset=utf-8"); /** * Created by PhpStor ...
- tensorflow学习笔记--dataset使用,创建自己的数据集
数据读入需求 我们在训练模型参数时想要从训练数据集中一次取出一小批数据(比如50条.100条)做梯度下降,不断地分批取出数据直到损失函数基本不再减小并且在训练集上的正确率足够高,取出的n条数据还要是预 ...
- SLAM的评测工具evo
遇到的问题 今天用orbslam2跑euroc数据集,将结果和真实轨迹用evo测评,发现差别特别大: evo_traj tum data.tum CameraTrajectory.txt --plot ...
- 六十三、SAP中的逻辑运算符
一.SAP中逻辑运算符包括AND, NOT, OR 二.输出如下
- 五十九、SAP中常用预定义系统变量
一.SAP中常用预定义系统变量 内容如下: 二.系统变量定义在结构SYST里,我们打开SE38 三.在代码编辑器输入SYST变量 四.双击SYST,来到这个系统结构,里面有很多系统变量 五.我们随便写 ...
- 四十三、在SAP中初始化勾选值
一.上代码 二.运行时,勾选框会被自动勾选中 三.表单如下
- 《新标准C++程序设计》4.1(C++学习笔记12)
运算符重载的概念和原理 一.运算符重载的需求 C++预定义的“+.-. * ./.%. ^ .&.~.!.|. = .<< >>.!= ”等运算符,只能用于基本数据类型 ...
- DataTable数据类型的一些操作 增加行、插入行、修改数据、修改列名、修改列顺序、计算、选取或删除行(列)、排序、某列distinct值 等
Datatable 这个数据类型在C#中涉及到对数据库读取时的用处还是挺大的,最近在处理一个报表开发时,一开始把所有的操作都放在sql 上面来做,就是我需要什么样的数据我就query出什么,但是这样其 ...
- 第二十篇ORM查询与SQL语句
ORM查询与SQL语句 多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情 ...