Python模块简介之有序字典(OrderedDict)攻略
一、什么是有序字典?
有序字典(OrderedDict)是Python标准库collections中的一个class。与字典(dict)不同的是,有序字典可以记录元素插入的顺序。
在Python3.7及以上版本中,字典的实现也具有了插入顺序的特性。在之前的版本中,如果需要使用有序字典的特性,需要使用collections模块中的OrderedDict。
二、有序字典的基本用法
1. 创建有序字典
有序字典的创建方式与字典相同,可以使用花括号({})或者内置函数dict()。示例如下:
from collections import OrderedDict
# 使用花括号创建有序字典
my_ordered_dict1 = OrderedDict({'a': 1, 'b': 2, 'c': 3})
print(my_ordered_dict1)
# 使用内置函数dict()创建有序字典
my_ordered_dict2 = OrderedDict(dict(a=1, b=2, c=3))
print(my_ordered_dict2)
输出结果为:
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
2. 查询与修改元素
有序字典中查询元素与字典相同,可以通过键(key)来获取相应的值。示例如下:
from collections import OrderedDict
# 创建有序字典
my_ordered_dict = OrderedDict({'a': 1, 'b': 2, 'c': 3})
# 查询元素
print(my_ordered_dict['a'])
# 修改元素
my_ordered_dict['a'] = 10
print(my_ordered_dict)
输出结果为:
1
OrderedDict([('a', 10), ('b', 2), ('c', 3)])
3. 添加和删除元素
有序字典中添加元素可以使用内置函数update(),可以同时添加多个元素。删除元素可以使用内置函数pop()和popitem(),其中pop()方法可以传入一个键值,而popitem()方法会删除最后插入的元素。示例如下:
from collections import OrderedDict
# 创建有序字典
my_ordered_dict = OrderedDict({'a': 1, 'b': 2, 'c': 3})
# 添加元素
my_ordered_dict.update({'d': 4, 'e': 5})
print(my_ordered_dict)
# 删除元素
my_ordered_dict.pop('a')
print(my_ordered_dict)
my_ordered_dict.popitem()
print(my_ordered_dict)
输出结果为:
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
OrderedDict([('b', 2), ('c', 3), ('d', 4), ('e', 5)])
OrderedDict([('b', 2), ('c', 3), ('d', 4)])
三、有序字典的高级用法
1. 有序字典排序
有序字典也可以使用sorted()函数进行排序。排序后的结果会生成一个list。
from collections import OrderedDict
# 创建有序字典
my_ordered_dict = OrderedDict({'a': 1, 'c': 3, 'b': 2})
# 排序有序字典
sorted_dict_items = sorted(my_ordered_dict.items(), key=lambda t: t[0])
# 输出排序后的结果
print(sorted_dict_items)
输出结果为:
[('a', 1), ('b', 2), ('c', 3)]
2. 有序字典与字典的相互转换
由于有序字典和字典是两种不同的数据结构,有时需要将它们进行相互转换。有序字典转换为字典可以直接使用内置函数dict(),而字典转换为有序字典需要使用collections模块中的OrderedDict()。
from collections import OrderedDict
# 创建有序字典
my_ordered_dict = OrderedDict({'a': 1, 'b': 2, 'c': 3})
# 有序字典转换为字典
my_dict = dict(my_ordered_dict)
print(my_dict)
# 字典转换为有序字典
my_ordered_dict2 = OrderedDict({'a': 1, 'b': 2, 'c': 3})
print(my_ordered_dict2)
输出结果为:
{'a': 1, 'b': 2, 'c': 3}
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
四、结语
有序字典是Python中非常实用的数据类型,能够保留元素的插入顺序,能够更好地满足一些特殊需求。本文主要介绍了有序字典的基本用法、高级用法以及转换。在实际开发中,有序字典会经常用到,应当熟练掌握。