标签:update 实例 cti 定义 imp date dhs error: ini
——数据类型扩展模块
from collections import OrderedDict
d = OrderedDict([(‘a‘,1),(‘b‘,2)])
d.move_to_end(‘a‘)
print(d)
输出结果:OrderedDict([(‘b‘, 2), (‘a‘, 1)])
from collections import defaultdict
d = defaultdict(list)
print(d[‘a‘])
print(d)
输出:
dict[key]
,第二种就是通过字典类中的__getitem__
方法才可以进行默认赋值
from collections import defaultdict
d = defaultdict(list)
d.pop(‘a‘) #删除一个没有的键值对
输出:
证明:并不是键值对一直就在里面,虽然可以有默认值,但是前提是需要创建
第二步通过子类中的__missing__
特殊方法,对未存在的键进行赋值,触发__missing__
的机制就是dict[key]
和__getitem__
,从python2.5版本开始,如果派生自dict
的子类定义了__missing__()
方法,当访问不存在的键时,dict[key]
会调用__missing__()
方法取得默认值。
字典类里是没有__missing__
方法的,只有在派生子类中自己去实现
class Missing(dict):
def __missing__(self, key):
self[key] = list()
return ‘default‘
d = Missing()
d[‘Foo‘]
print(d)
输出的答案:
?
class My_DefaultDict(dict):
def __init__(self,default_factory=None,**kwargs):
dict.__init__(self,**kwargs)
self.default_factory = default_factory
def __getitem__(self, key):
try:
return dict.__getitem__(self,key)
except KeyError:
return self.__missing__(key)
def __missing__(self, key):
if self.default_factory == None:
self[key] = value = self.default_factory
else:
self[key] = value = self.default_factory()
return value
d = My_DefaultDict(list)
d[‘a‘].append(1)
print(d)
输出:
得出的结果和使用defaultdict实现的一样。
from collections import namedtuple
Msg = namedtuple(‘Msg‘,[‘name‘,‘sex‘,‘age‘])
m1 = Course(‘Abner‘,‘male‘,‘22‘)
print(m1)
输出:Msg(name=‘Abner‘, sex=‘male‘, age=‘22‘)
保留了元组的特性
让用户可以明确了解每个值的明确含义
十分类似一个只有属性没有方法的类,列表中的就是属性名
这种类的特点,不能修改实例化的值了
作用:可以补全list的缺点,insert速度过慢
什么是队列?
在python中有queue模块,队列类在该模块内,Queue类
队列的原则:先进先出,后进后出
功能:
q = queue.Queue()
q.get() 拿到数据
q.put() 放数据
应用场景:排队抢票队列
双端队列的优势:在两边都可以取值
特殊方法
from collections import deque
dq = deque([1,2,3,4,5])
dq.rotate(-2)
print(dq)
输出:deque([3, 4, 5, 1, 2]) 向前推了两个元素
每个元素都有前指针和后指针,确定自己所在位置
遇到insert不要使用list列表,因为效率过低,使用deque更优。
作用:统计可迭代对象的元素出现次数
c = Counter(‘abcdeabcdabcaba‘)
print c
输出:Counter({‘a‘: 5, ‘b‘: 4, ‘c‘: 3, ‘d‘: 2, ‘e‘: 1})
支持update:
from collections import Counter
c = Counter(‘adhskfgufhgfuhafkah‘)
print(c)
c.update(‘dhajhdakdhhf‘)
print(c)
输出:
Counter({‘h‘: 4, ‘f‘: 4, ‘a‘: 3, ‘k‘: 2, ‘g‘: 2, ‘u‘: 2, ‘d‘: 1, ‘s‘: 1})
Counter({‘h‘: 8, ‘a‘: 5, ‘f‘: 5, ‘d‘: 4, ‘k‘: 3, ‘g‘: 2, ‘u‘: 2, ‘s‘: 1, ‘j‘: 1})
标签:update 实例 cti 定义 imp date dhs error: ini
原文地址:https://www.cnblogs.com/abner28/p/9594110.html