Python标准库的collections模块提供了名为OrderedDict的有序字典。它选择性地接受一个可迭代对象作为初始化参数:
from collections import OrderedDict
OrderedDict((str(number), None) for number in range(5)).keys()
OrderedDict还有一些其他功能,例如利用popitem()方法在双端取出元素或者利用move _ to _ end()
方法将指定元素移动到某一端。
popitem(last=True)的作用是有序字典返回并删除键值对。如果 last 为 true,则按 LIFO 顺序返回。如果为 false,则为 FIFO 顺序。
move_to_end(key, last=True)将现有键移动到有序字典的任一端。如果last为true(默认值),则移动到右端。当last为false时移动到最左侧。
用法如下:
from collections import OrderedDict
d = OrderedDict.fromkeys('abcde')
d.move_to_end('b')
''.join(d)
d.move_to_end('b', last=False)
''.join(d)
运行效果如下
不可变集合是指一旦创建内容就不再发生变化的集合,他是一种不可变的、可哈希的、无序的集合,其元素是唯一的、不可变的(可哈希的)对象。
由于frozenset()具有不变性,它可以用作字典的键,也可以作为其他set()和frozenset()的元素。在一个set()或frozenset()中不能包含另一个普通的可变set()
正确用法如下:
set([frozenset([1,2,3]), frozenset([2,3,4])])
frozenset([frozenset([1,2,3]), frozenset([2,3,4])])
但如果使用set对象作为set中的值,将会出错
效果如下
set([set([1,2,3]), set([2,3,4])])