本文主要是介绍【python-进阶】set和dict,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
6.1collections中的abc
6.2dict的常用方法
clear()
copy()#浅拷贝
使用的是同一个地址的值
深拷贝
import copy
new_d=copy.deepcopy(d)
此时使用的是不同的地址
fromkeys()
入参:可迭代的对象,如字典,元组,列表,字符串
出参:变换后的字典
例子:
d={‘a’:’1’,’b’:’2’}
dict.fromkeys(‘hi’,d)
pringt(d)
=>{‘h’:{‘a’:’1’,’b’:’2’},’i’:{‘a’:’1’,’b’:’2’}}
setdedault()
入参:key value
出参:新key的value值
例子:
print d.setdedault(‘c’,3)
=>3
update()
入参:需要添加的字典
出参:变更后的字典
例子:
d1={‘q’:2,’w’:3,’r’:4}
d.update(d1)
print d
=>{‘a’:’1’,’b’:’2’,’q’:2,’w’:3,’r’:4}
get()
根据key获取value值
6.3defaultdict
from collections import defaultdict
d = defaultdict(int)
v = d[‘a’] # 添加一个新key
print(v)
=>0 如果是int型,则空值为0
d = defaultdict(dict)
v = d[‘a’] # 添加一个新key
print(v)
=>{} 如果是int型,则空值为{}
原理是运用了一个魔方函数:miss()
6.4set和frozenset
set()
入参:是一个可迭代的对象
出参:是入参的一个无序的对象,用大括号{}包裹,而且是去重的
s=set(‘abcde’)
print s
=>{‘e’,’c’,’b’,’d’,’a’}
s=set([‘a’,’b’,’d’,’b’])
print s
=>{‘b’,’d’,’a’}
add()
clear()
copy()
update()
remove()
pop()
difference()# 集合的差集,原集合不变,返回一个新的集合,即差集
如下:
s={‘a’,’b’}
s1={‘a’}
diff_s = s.difference(s1)
print(diff_s)
=>{‘b’}
这个方法和ior()魔法函数相关
实际上和s-s1类似
交集:
s & s1
并集:
s | s1
set的性能很高,可以运用在去重操作中
由于有__contains__()
魔法函数,可以用于if … in …的操作中
6.5dict和set的实现原理
dict查找的性能远远大于list
在list中随着list数据的增大,查找时间会增大
在dict中查找元素不会随着dict的增大而增大
dict背后的实现原理是哈希表
1、dict的key或者set的值,都必须是可以hash的
不可变对象,都是可hash的,如str,frozenset,tuple,自己实现类__hash__
2、dict的内存花销大,但是查询速度快,自定义对象或者python内部的对象都是dict包装的
3、dict的存储顺序和元素添加的顺序有关
4、添加数据可能会更改已有数据的顺序
这篇关于【python-进阶】set和dict的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!