网页设计与网站建设在线考试1,学室内设计需要什么学历,规模以上工业企业是指什么,柳河网站建设文章目录deque(双向列表)defaultdict(为不存在的key设置默认值)OrderedDictOrderedDict可以实现一个FIFO#xff08;先进先出#xff09;的dict#xff0c;Counter参考collections是Python内建的一个集合模块#xff0c;提供了许多有用的集合类。deque(双向列表)
使用list…
文章目录deque(双向列表)defaultdict(为不存在的key设置默认值)OrderedDictOrderedDict可以实现一个FIFO先进先出的dictCounter参考collections是Python内建的一个集合模块提供了许多有用的集合类。deque(双向列表)
使用list存储数据时按索引访问元素很快但是插入和删除元素就很慢了因为list是线性存储数据量大的时候插入和删除效率很低。
deque是为了高效实现插入和删除操作的双向列表适合用于队列和栈
from collections import deque
deque除了实现list的append()和pop()外还支持appendleft()和popleft()这样就可以非常高效地往头部添加或删除元素。 from collections import dequemyqueue deque()myqueue.append(y)myqueue.append(x)myqueue
deque([y, x])myqueue.appendleft(m)myqueue
deque([m, y, x])myqueue.clear()myqueue
deque([])myqueue.append(j)myqueue.extend(ad)myqueue
deque([j, a, d])myqueue.extendleft(v)myqueue
deque([v, j, a, d])myqueue.rotate()myqueue
deque([d, v, j, a])defaultdict(为不存在的key设置默认值)
使用dict时如果引用的Key不存在就会抛出KeyError。如果希望key不存在时返回一个默认值就可以用defaultdict from collections import defaultdictdd defaultdict(lambda: N/A)dd[key1] abcdd[key1] # key1存在
abcdd[key2] # key2不存在返回默认值
N/A注意默认值是调用函数返回的而函数在创建defaultdict对象时传入。 除了在Key不存在时返回默认值defaultdict的其他行为跟dict是完全一样的。
OrderedDict
使用dict时Key是无序的。在对dict做迭代时我们无法确定Key的顺序。
如果要保持Key的顺序可以用OrderedDict from collections import OrderedDictd dict([(a, 1), (b, 2), (c, 3)])d # dict的Key是无序的
{a: 1, c: 3, b: 2}od OrderedDict([(a, 1), (b, 2), (c, 3)])od # OrderedDict的Key是有序的
OrderedDict([(a, 1), (b, 2), (c, 3)])
注意OrderedDict的Key会按照插入的顺序排列不是Key本身排序 od OrderedDict()od[z] 1od[y] 2od[x] 3od.keys() # 按照插入的Key的顺序返回
[z, y, x]OrderedDict可以实现一个FIFO先进先出的dict
当容量超出限制时先删除最早添加的Key
from collections import OrderedDict
class LastUpdatedOrderedDict(OrderedDict):
def __init__(self, capacity):super(LastUpdatedOrderedDict, self).__init__()self._capacity capacitydef __setitem__(self, key, value):containsKey 1 if key in self else 0if len(self) - containsKey self._capacity:last self.popitem(lastFalse)print remove:, lastif containsKey:del self[key]print set:, (key, value)else:print add:, (key, value)OrderedDict.__setitem__(self, key, value)Counter
Counter是一个简单的计数器例如统计字符出现的个数 from collections import Counterc Counter()for ch in programming:
... c[ch] c[ch] 1
...c
Counter({g: 2, m: 2, r: 2, a: 1, i: 1, o: 1, n: 1, p: 1})Counter实际上也是dict的一个子类上面的结果可以看出字符’g’、‘m’、r’各出现了两次其他字符各出现了一次。
参考
(1)廖雪峰网站 (2).琉璃的python