如何在Python中编写自己的OrderedDict类?

时间:2016-02-06 20:06:33

标签: python django python-2.7 dictionary ordereddictionary

基本上我想了解这件事是如何运作的。我试图创建一个元组列表[(),(),...],每个元组将有两个值,qst wuld是键,第二个是值。但这不是一个真正的字典,也存在性能问题(我的意思是读/写/删除操作。

那么我应该如何编写一个类MyOrderedDict,它将(可能)扩展默认的dict类。

任何提示或资源都将受到赞赏。

PS:我们在Django中具有类似的功能。 SortedDict

from django.utils.datastructures import SortedDict

它们是相同的还是在实施中遵循相同的方法?

Help on class SortedDict in module django.utils.datastructures:

class SortedDict(__builtin__.dict)
 |  A dictionary that keeps its keys in the order in which they're inserted.
 |  
 |  Method resolution order:
 |      SortedDict
 |      __builtin__.dict
 |      __builtin__.object
 |  
 |  Methods defined here:

2 个答案:

答案 0 :(得分:2)

该课程将管理字典和列表。在幕后,对于每个标准的dict操作,它将使用两者:

Dvalues = {"foo":"x","bar":"y","baz":"z"}
Lorder = ["bar","baz","foo"]

要按键获取值,请将其作为标准字典:

return Dvalues[key]

要按输入的顺序m获取值:

return Dvalues[Lorder[m]]

添加键,值:

Dvalues[key] = value
Lorder.append(key)

答案 1 :(得分:0)

您可以查看source in Python 2。它似乎是用C 3 for Python 3实现的。