Python OrderedDict
Python OrderedDict是一个dict子类,用于维护项目的插入顺序。
当我们遍历OrderedDict时,将按插入顺序返回项目。
常规词典无法跟踪插入顺序。
因此,当对其进行迭代时,将以任意顺序返回项目。
当我们要确保按插入顺序返回项目时,可以使用OrderedDict。
Python OrderedDict
OrderedDict是python集合模块的一部分。
我们可以创建一个空的OrderedDict并向其中添加项目。
如果我们通过传递dict参数来创建OrderedDict,则该顺序可能会丢失,因为dict无法维持插入顺序。如果某个项目在OrderedDict中被覆盖,则其位置将保持不变。
如果一个项目被删除并再次添加,则它将移至最后一个。
OrderedDict
popitem
以FIFO顺序删除项目。
它接受布尔参数" last",如果将其设置为" True",则将按照LIFO顺序返回项目。我们可以使用
move_to_end
函数将一个项目移动到OrderedDict的开头或者结尾。
它接受布尔参数" last",如果将其设置为" False",则项目将移至有序字典的开头。从python 3.6开始,保留传递给OrderedDict构造函数的关键字参数的顺序,请参阅PEP-468。
我们可以对OrderedDict使用
reversed()
函数以相反的顺序迭代元素。OrderedDict对象之间的相等性测试对顺序敏感,并且被实现为" list(od1.items())== list(od2.items())"。
与常规字典一样,OrderedDict与其他Mapping对象之间的相等性测试对顺序不敏感。
这样就可以在使用常规词典的任何地方替换OrderedDict对象。
Python OrderedDict示例
我们来看一些Python OrderedDict的代码示例。
创建OrderedDict对象
from collections import OrderedDict # creating a simple dict my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3} # creating empty ordered dict ordered_dict = OrderedDict() print(ordered_dict) # creating ordered dict from dict ordered_dict = OrderedDict(my_dict) print(ordered_dict)
输出:
OrderedDict() OrderedDict([('kiwi', 4), ('apple', 5), ('cat', 3)])
从OrderedDict添加,替换,删除项目
# adding elements to dict ordered_dict['dog'] = 3 # replacing a dict key value ordered_dict['kiwi'] = 10 print(ordered_dict) # removing and adding a value ordered_dict.pop('kiwi') print(ordered_dict) ordered_dict['kiwi'] = 4 print(ordered_dict)
输出:
OrderedDict([('kiwi', 10), ('apple', 5), ('cat', 3), ('dog', 3)]) OrderedDict([('apple', 5), ('cat', 3), ('dog', 3)]) OrderedDict([('apple', 5), ('cat', 3), ('dog', 3), ('kiwi', 4)])
OrderedDict move_to_end示例
# moving apple to end and dog to start ordered_dict.move_to_end('apple') ordered_dict.move_to_end('dog', False) print(ordered_dict)
输出:
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4), ('apple', 5)])
OrderedDict popitem示例
# pop last item item = ordered_dict.popitem(True) print(item) print(ordered_dict)
输出:
('apple', 5) OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4)])
OrderedDict反向迭代
# reversed iteration for item in reversed(ordered_dict): print(item)
输出:
kiwi cat dog
OrderedDict相等性测试示例
# equality tests d1 = {'a': 'A', 'b': 'B'} d2 = {'b': 'B', 'a': 'A'} od1 = OrderedDict({'a': 'A', 'b': 'B'}) od2 = OrderedDict({'b': 'B', 'a': 'A'}) print(d1 == d2) print(od1 == od2) print(d1 == od1)
输出:
True False True