手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

python 3 字典dict和OrderedDict的排序和读写

时间:2024-10-12 16:13:46

1、如图,xs是一个简单的python字典。通过成员函数items可以获取dict_items元组列表,使用成员函数keys可以获取dict_keys键列表。

python 3 字典dict和OrderedDict的排序和读写

2、实用sorted函数作用于items函数返回的元组列表,可以元盲褓梆尺组为元素,返回一个排序后的新列表,如图。按照元组排序时,默认先比较第一个元素,对于(key, value)元组,就是按照key排序。

python 3 字典dict和OrderedDict的排序和读写

3、如果需要非默认的排序,比如按照值排序,巡綮碣褂或者按照其他标准排序,需要设定sorted函数的key参数。如图,传入一邗锒凳审个lambda表达式,表示按照元组第二个元素排序。使用reverse参数来控制反转(大到小)。

python 3 字典dict和OrderedDict的排序和读写

4、排序操作也可以使用现成的函数,比如operator模块有itemgetter,可用于生成需要的函数(和刚才lambda表达式等价)

python 3 字典dict和OrderedDict的排序和读写

5、使用sorted会返回排序后列表,如果已经生成待排序列表,可以调用列表的sort成员函数来就地排序。

python 3 字典dict和OrderedDict的排序和读写

6、对于一个(key, value)元组组成的列表,可以直接使用dict构造函数构造字典。如图所示。

python 3 字典dict和OrderedDict的排序和读写

7、OrderedDict则来自collections模块,注意他并不是指插入的元素自动排序,而是指字典在遍历时会保留插入元素的顺序。这也是dict和OrderedDict的唯一功能区别。

python 3 字典dict和OrderedDict的排序和读写

8、不论是dict还是OrderedDict,实现应该都是哈希表。进行读写实验如下。首先生成40组,每组300000个随即key-value对。

python 3 字典dict和OrderedDict的排序和读写

9、然后重复40轮300000元素的写-读实验。后一轮并不清空前一轮的字典,所以字诽粘辔凉典内的key-value是随轮数线性上升的。dict字典40轮的时间茇坍酮踪消耗见下图。可见字典在5,10,20,40轮左右进行了扩容,但是摊还时间是一条水平线,即O(1)。说明dict是哈希表。

python 3 字典dict和OrderedDict的排序和读写

10、同样的,对于OrderedDict也进行完全相同的实验,发现有和dict相同的现象。OrderedDict也是哈希表,但是其时间消耗比dict多。

python 3 字典dict和OrderedDict的排序和读写
© 手抄报圈