是否有一个python数据结构:键控,有序和可通过键和顺序寻址?

eas*_*de5 3 python data-structures

我正在寻找一个混合了OrderedDict但也可以通过整数寻址的数据结构,具体取决于添加元素的时间.

config_key = OrderedDict([('Version_Number', 'a'),
                ('Hardware_Config', 'b'),
                ('Size_Of_Data', 'c'),
                ('Checksum', 'd')])
Run Code Online (Sandbox Code Playgroud)

这将起到如下作用:

>> print config_key['Version_Number']
a
>> print config_key[0]
a
>> print config_key['Size_Of_Data']
c
>> print config_key[2]
c
>> for x in config_key:
>>  print x
Version_Number
Hardware_Config
Size_Of_Data
Checksum
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Chr*_* W. 7

如果您使用的是Python 2.7+,那么内置一个.

http://docs.python.org/library/collections.html#collections.OrderedDict

编辑:所以它看起来像是通过弹出操作支持项目的顺序,但你可以通过list(my_ordered_dict)[i]哪里i是一个整数做相同的你想要的.

# Make your own like this...
class CustomOrderedDict(collections.OrderedDict):
    def __getitem__(self,key):
        try:
            return self.values()[key]
        except TypeError:
            return super(CustomOrderedDict,self).__getitem__(key)
Run Code Online (Sandbox Code Playgroud)

编辑:

(对不起所有这些错误,我只是快速输入它,让你知道该怎么做.)

  • 固定返回值而不是键
  • 固定递归流感
  • 切换列表访问[]语法,因为,作为一个列表,更有意义.

  • 虽然非常浪费 - 每次创建一个新列表.(你有没有理由使用`.__ getitem(key)`而不是`[key]`?) (2认同)