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的重要概念.在面向对象中类和对象是最基本的两个概 ...
 
随机推荐
- Solve Error: Could not find the certificate xxxx.com. at ServerlessCustomDomain.<anonymous>
			
When runs "serverless create_domain", we may get the following error: Could not find the c ...
 - 三十八、SAP设置默认语言
			
一.点击系统->用户参数文件->用户数据 二.设置成需要的语言 三.重新登录,并在登录时选择EN 四.进入界面
 - 操作系统类型&操作系统结构&现代操作系统基本特征
			
五大类型操作系统 (1). 批处理操作系统 用户脱机使用计算机 用户提交作业之后直到获得结果之前就不再和计算机打交道. 作业提交的方式可以是直接交给计算中心的管理操作员,也可以是通过远程通讯线路提交. ...
 - 实验吧-杂项-啦啦啦(数据包http导出、图片拼接)
			
比较综合的一道题. 1.数据包数据提取 首先下载数据包,一般数据包都是抓取的一些数据,需要对数据进行分析. 用wireshark打开数据包,筛选出http协议的数据,发现有两个是上传的数据: 我们就看 ...
 - 第十二篇视图层之视图函数(views)-三件套
			
视图层之视图函数(views) 阅读目录(Content) 视图层之视图函数(views) 一个简单的视图 HttpRequest HttpResponse redirect 函数 对比render与 ...
 - java处理浮点数小数点后几位
			
转载:https://blog.csdn.net/xue_feitian/article/details/6556275 第一种方法: double f = 123.2315455458; BigDe ...
 - Arduino -  -- 串口双向通信
			
需要用到Arduino UNO的串口双向通信功能,以下源码: int val; void setup() { Serial.begin(9600); // opensserial port, se ...
 - Day3-T3
			
原题目 Describe:又是这种最大子矩阵捆绑一堆条件的题 code: #pragma GCC optimize(2) #include<bits/stdc++.h> #define j ...
 - scp、wget
			
scp使用方法 -1 强制scp命令使用协议ssh1 -2 强制scp命令使用协议ssh2 -4 强制scp命令只使用IPv4寻址 -6 强制scp命令只使用IPv6寻址 -B 使用批处理模 ...
 - 尝试用kotlin做一个app(写在前面)
			
学kotlin的目的好像就是做一个app,不一定有什么想做的项目,只是单纯想掌握这一门技术,确切地说只是单纯想学会做app.对于概念的东西,我也没兴趣深究,用得到的学一下,用不到的,就算了.我也不知道 ...