python源代码collections.py中OrderDict的数据结构root双向链表是如何运作的?

fzyz_sb 发布于 2013/08/25 13:26
阅读 593
收藏 0

在学习python标准库的时候,看了下collections.py中OrderDict的源代码,里面的初始化函数用到了一个类似双向链表的结构体:

def __init__(self, *args, **kwds):
        """initialize an ordered dictionary. the signature is the same as
        regular dictionaries, but keyword arguments are not recommended because
        their insertion order is arbitrary"""
        
        if len(args) > 1:
            raise TypeError('expected at most 1 arguments, got %d' % len(args))
        try:
            self.__root
        except AttributeError:
            self.__root = root = []
            root[:] = [root, root, None]
            self.__map = {}
        self.__update(*args, **kwds)
我往下看的时候,发现下面大量用到root这个双向链表进行数据的__setitem__和__delitem__,但是感觉有点乱,不知道具体是如何进行的。

请大神帮忙指点一下。当然,不要用C语言的双向链表的概念。


加载中
返回顶部
顶部