如何按插入顺序从字典中检索项目?

68 投票
11 回答
53506 浏览
提问于 2025-04-11 09:23

在Python字典中,能否按照插入的顺序来获取里面的项目呢?

11 个回答

20

使用OrderedDict(),这个功能从2.7版本开始就有了。

只是出于好奇:

from collections import OrderedDict
a = {}
b = OrderedDict()
c = OrderedDict()

a['key1'] = 'value1'
a['key2'] = 'value2'

b['key1'] = 'value1'
b['key2'] = 'value2'

c['key2'] = 'value2'
c['key1'] = 'value1'

print a == b  # True
print a == c  # True
print b == c  # False
27

从Python 3.7开始,标准的字典(dict)会保持你添加元素的顺序。根据官方文档的说明:

在3.7版本中进行了更改:字典的顺序保证是插入顺序。这种行为在3.6版本的CPython中是实现细节。

所以,你可以正常地遍历字典,或者使用popitem()这个方法。

71

在使用CPython 3.6及以上版本(或者其他Python实现的3.7及以上版本)时,标准的Python dict 默认就会保持插入的顺序。

如果你使用的是旧版本的Python,可以使用collections.OrderedDict

撰写回答