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

