python模块简介之有序字典(OrderedDict)

  • Post category:Python

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中非常实用的数据类型,能够保留元素的插入顺序,能够更好地满足一些特殊需求。本文主要介绍了有序字典的基本用法、高级用法以及转换。在实际开发中,有序字典会经常用到,应当熟练掌握。