1.5 优先级队列
这一节讲的是通过使用 heapq 模块建一个类实现优先级队列, 然后进行 push 和 pop,看到这里,如果熟悉 deque 模块的话,马上就可以现代高 queue 里有个方法可以直接使用优先级队列, PriorityQueue,想了解可以直接查询官方文档,这里不做赘述。
1.6 在字典中将键映射到多个值上
看到这个标题就可以想到 collections.default() 函数。
值得注意的一点是,如果多个值可以有重复的,那么使用的就是 list,如果需要消除重复元素,那么就可以使用 set,在定义的时候区分即可。
使用 list
from collections import default
d = default(list)
d['a'].append('1')
d['a'].append('2')
使用set
from collections import default
d = default(set)
d['a'].add('1')
d['a'].add('2')
1.7 让字典保持有序
这个功能的实现同样用到的是 collections 模块,使用的是 collections.OrderedDict 函数。
from collections import OrderedDict
d = OrderedDict()
d['foo'] = 1
d['bar'] = 2
然后对字典进行打印,可以看到顺序是按照我们添加时候的顺序打印出来的。
for key in d.keys():
print(key, d[key])
foo 1
bar 2
需要注意的一点是其内部维护了一个双向链表,因此大小是普通字典的 2 倍多。