有没有一种Python数据结构:键值对、有序、且可通过键和顺序访问?

3 投票
1 回答
1258 浏览
提问于 2025-04-16 15:59

我在寻找一种数据结构,它既像OrderedDict那样有序,同时又可以通过整数来访问,具体取决于元素添加的时间。

也就是说:

config_key = OrderedDict([('Version_Number', 'a'),
                ('Hardware_Config', 'b'),
                ('Size_Of_Data', 'c'),
                ('Checksum', 'd')])

它的功能应该像这样:

>> 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

有没有什么好的建议?

1 个回答

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)

补充说明:

(抱歉出现了这么多错误,我只是快速写下这些内容,给你一个大概的思路。)

  • 修正了返回值而不是键的问题
  • 修正了递归的错误
  • 将列表访问改为 [] 语法,因为作为一个列表,这样更合理。

撰写回答