与Python中的LinkedHashMap等效

mhd8tkvw  于 2022-12-10  发布在  Python
关注(0)|答案(5)|浏览(239)

LinkedHashMap是一个类似于哈希表的数据结构(Python中的dict)的Java实现,它具有可预测的迭代顺序。这意味着在遍历所有键的过程中,它们是按插入顺序排序的。这是通过一个附加的链表来维护插入顺序的。
在Python中是否有与之对应的代码?

jgovgodb

jgovgodb1#

从Python 3.7开始,dict对象默认保持它们的插入顺序。
如果你使用的是Python 2.7或Python 3.1,你可以使用标准库中的collections.OrderedDict。
这个问题的答案How do you retrieve items from a dictionary in the order that they’re inserted?包含了一个有序dict的实现,以防你没有使用Python 3.x,也不想给予自己一个对第三方ordereddict module的依赖。

6jjcrrmo

6jjcrrmo2#

虽然您可以通过维护一个列表来跟踪插入顺序来完成同样的事情,但是Python 2.7Python >=3.1在集合模块中有一个OrderedDict类。
在Python 2.7之前,可以子类化dictfollowing this recipe

fdx2calv

fdx2calv3#

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

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

您可以使用ordereddict模块按插入顺序对dic进行排序。

d = ordereddict(dic, relax=True)
f3temu5u

f3temu5u4#

除验证意见外;
从Python 3.7开始,dict保留了插入顺序。
This answer详细显示了这一点。

yfjy0ee7

yfjy0ee75#

我不这么认为;你必须使用一个dict加上一个列表,但是你可以很容易地把它 Package 在一个类中,然后定义keys__getitem____setitem__等等,让它按照你想要的方式工作。

相关问题