Python 中类似于 LinkedHashMap 的等价物

32

LinkedHashMap 是 Java 中类似于 Hashtable 的数据结构(Python中的dict),其遍历顺序是可预测的。这意味着在遍历所有键时,它们按照插入顺序排序。这是通过维护一个额外的链表来完成的,该链表维护了插入顺序。

Python 中是否有相当的实现呢?

5个回答

23

12

尽管您可以通过维护列表来跟踪插入顺序,Python 2.7Python >=3.1在collections模块中具有OrderedDict类。

在2.7之前,您可以按照此配方子类化dict。


根据您提供的文档,OrderedDict 将在 Python 3.1 中推出,但尚未在 3.0 版本中推出。 - kquinn

3
我不确定这是否是您要求的内容:

我不确定这是否是您要求的内容:

>>> dic = {1: 'one', 2: 'two'}
>>> for k, v in dic.iteritems():
...     print k, v

你可以使用ordereddict模块按插入顺序对字典进行排序。
d = ordereddict(dic, relax=True)

我认为 dict.iteritems 不会根据插入顺序提供排序... - sykora
正确!你需要使用ordereddict模块来实现。 - aatifh

2

除了已验证的评论之外;

从Python 3.7开始,dict保留插入顺序。

这个答案详细说明了这一点。


1

我认为不行,你需要使用字典和列表。但是你可以很容易地将其封装在一个类中,并定义keys__getitem____setitem__等来使其按照你想要的方式工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接